
From nobody Wed Oct  1 01:38:51 2014
Return-Path: <ulrich.wiehe@nsn.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2A19A1A9175 for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 01:38:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.901
X-Spam-Level: 
X-Spam-Status: No, score=-6.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UmAt0QivamZI for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 01:38:47 -0700 (PDT)
Received: from demumfd002.nsn-inter.net (demumfd002.nsn-inter.net [93.183.12.31]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 95C611A9173 for <dime@ietf.org>; Wed,  1 Oct 2014 01:38:46 -0700 (PDT)
Received: from demuprx016.emea.nsn-intra.net ([10.150.129.55]) by demumfd002.nsn-inter.net (8.14.3/8.14.3) with ESMTP id s918ciYR022614 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Oct 2014 08:38:44 GMT
Received: from DEMUHTC004.nsn-intra.net ([10.159.42.35]) by demuprx016.emea.nsn-intra.net (8.12.11.20060308/8.12.11) with ESMTP id s918ccqa030378 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 1 Oct 2014 10:38:43 +0200
Received: from DEMUHTC008.nsn-intra.net (10.159.42.39) by DEMUHTC004.nsn-intra.net (10.159.42.35) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 1 Oct 2014 10:38:39 +0200
Received: from DEMUMBX014.nsn-intra.net ([169.254.14.218]) by DEMUHTC008.nsn-intra.net ([10.159.42.39]) with mapi id 14.03.0195.001; Wed, 1 Oct 2014 10:38:39 +0200
From: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
To: ext Steve Donovan <srdonovan@usdonovans.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] DOIC #70 - Proposed resolution to core issue
Thread-Index: AQHP3LzxVwlySCWp3U+Xg2cvYp/Vlpwa49oA
Date: Wed, 1 Oct 2014 08:38:39 +0000
Message-ID: <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net>
References: <542AC192.9090600@usdonovans.com>
In-Reply-To: <542AC192.9090600@usdonovans.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-originating-ip: [10.159.42.109]
Content-Type: multipart/mixed; boundary="_002_5BCBA1FC2B7F0B4C9D935572D90006681521304DDEMUMBX014nsnin_"
MIME-Version: 1.0
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: clean
X-purgate: This mail is considered clean (visit http://www.eleven.de for further information)
X-purgate-size: 26464
X-purgate-ID: 151667::1412152724-00001FC1-2BC4EB59/0/0
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/E313JdFRibiD0vRZr6Otv7Jjr9Y
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Oct 2014 08:38:49 -0000

--_002_5BCBA1FC2B7F0B4C9D935572D90006681521304DDEMUMBX014nsnin_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Steve,

I agree that there may be cases where the agent that selects the server doe=
s not support DOIC, and consequently transparently forwards a host-type OLR=
 to the client which then receives a host-type OLR in response to a realm-t=
ype request.

The example flow in Appendix B, however, assumes that the agent supports DO=
IC.

Please find the proposed modification attached.

Ulrich


-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Steve Donovan
Sent: Tuesday, September 30, 2014 4:44 PM
To: dime@ietf.org
Subject: [Dime] DOIC #70 - Proposed resolution to core issue

All,

The core issue raised in issue #70 is whether a client can receive an=20
OLR of type host when the request sent by the client was realm routed.

I do not support the suggested change as there are scenarios where=20
clients MUST be prepared to receive the OLR of type host when the client=20
does not do server selection.  This is required for the scenario where=20
agents do not support DOIC.  If the request does not contain a=20
Destination-Host AVP then agents will be responsible for server=20
selection.   An overloaded server will send an OLR of type host that=20
will find its way back to the client.

It is true that this might cause unneeded OCS entries in the client in a=20
scenario where the client will never do server selection for that=20
overloaded server.  This concern can be addressed by making it up to=20
local policy whether or not the client saves OCS for the overload=20
report.  If the client knows that it will never do server selection for=20
a server indicated in a host OLR then the client can choose to not save=20
the overload report.

Based on this, I propose that we close issue #70 without changes to the=20
DOIC specification.

The discussion about the handling of a mix of overload abatement=20
algorithms should continue.  We can open a separate issue if needed to=20
address that functionality.

Regards,

Steve

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime

--_002_5BCBA1FC2B7F0B4C9D935572D90006681521304DDEMUMBX014nsnin_
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
	name="#70rev1.docx"
Content-Description: #70rev1.docx
Content-Disposition: attachment; filename="#70rev1.docx"; size=17290;
	creation-date="Wed, 01 Oct 2014 08:05:32 GMT";
	modification-date="Wed, 01 Oct 2014 08:30:29 GMT"
Content-Transfer-Encoding: base64

UEsDBBQABgAIAAAAIQDr01KodAEAAKMFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0
lMtOwzAQRfdI/IPlLUrcskAIJemCxxIqUT7AtSethV+y3dffM0nbCAFNRatuIkXxnHvveCbFaG00
WUKIytmSDvMBJWCFk8rOSvoxecnuKYmJW8m1s1DSDUQ6qq6visnGQyRYbWNJ5yn5B8aimIPhMXce
LH6pXTA84WuYMc/FJ58Bux0M7phwNoFNWWoYtCre0EBQEsiYh/TKDeqwlQsSDxqDB2OONEoet2WN
ckm591oJntA3W1r5QzNzda0ESCcWDSBvaD44ATFiMqPzPfmmIbOqeIKaL3Qiz2t0tm1GAB3/J7oL
mWNlayzOlY89Cv2pds4ONqcL1485oTkd2XBl9/4P+ohpo+ECV7Tl9smjz3FwPjIchrNHBJqblyAz
nBMPISnoru5wdEgJ5+kS4XfkvvjtiiRcOWDtc3h2D1rMUcka93DCpxrO1vu1lh36qIkVTN8v1v1v
8D4j3fwJF05oxv530VT/MXWs/cVWXwAAAP//AwBQSwMEFAAGAAgAAAAhAB6RGrfzAAAATgIAAAsA
CAJfcmVscy8ucmVscyCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACMkttKA0EMhu8F32HIfTfbCiLS2d5IoXci6wOEmewBdw7MpNq+
vaMgulDbXub058tP1puDm9Q7pzwGr2FZ1aDYm2BH32t4bbeLB1BZyFuagmcNR86waW5v1i88kZSh
PIwxq6Lis4ZBJD4iZjOwo1yFyL5UupAcSQlTj5HMG/WMq7q+x/RXA5qZptpZDWln70C1x1g2X9YO
XTcafgpm79jLiRXIB2Fv2S5iKmxJxnKNain1LBpsMM8lnZFirAo24Gmi1fVE/1+LjoUsCaEJic/z
fHWcA1peD3TZonnHrzsfIVksFn17+0ODsy9oPgEAAP//AwBQSwMEFAAGAAgAAAAhAJs7tcMJAQAA
tAMAABwACAF3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzIKIEASigAAEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAArJNNTsMwEIX3SNzBmj1xUqBCVZ1uUKVuIRzAdSY/IrEjzxTI7TGRUlJR
hU02luZZfu+zZ7zdfbWN+EBPtbMKkigGgda4vLalgrdsf/cEgljbXDfOooIeCXbp7c32BRvN4RBV
dUciuFhSUDF3GynJVNhqilyHNuwUzreaQ+lL2WnzrkuUqzheSz/1gPTCUxxyBf6Q34PI+i4k/+/t
iqI2+OzMqUXLVyLkJx5fkTlcjoKt9iWygokYBVqQ10FWS4LQH4pRmUNIFkXgvgnNPD8DDfVc/HrJ
eA4jgr/pQymHNZljeFySoXCWM31sJhxnaQ7iYUkI49qfcZ10YlRGBHnx19JvAAAA//8DAFBLAwQU
AAYACAAAACEA/QH3PcgSAABhywAAEQAAAHdvcmQvZG9jdW1lbnQueG1s7F3tb6M4Hv5+0v0PVk7a
y0hNG5Im7WS3WXUmMzcr3WmrtHsn3TcHnAYNAQ5IM5X2j7/H5s0kkAANnbLr+TChkIB5/PPze7X9
08/f1hZ5Yp5vOvZNRzvvdwizdccw7cebzm8Pn3vXHeIH1Dao5djspvPM/M7P07/+5aftxHD0zZrZ
AcEtbH/yhKurIHAnFxe+vmJr6p87LrNxcel4axrgT+/xYk29rxu3pztrlwbmwrTM4Pli0O+PO9Ft
nJvOxrMn0S16a1P3HN9ZBvwnE2e5NHUWfcS/8Mo8N/zlLGqyeOKFxyy0wbH9len68d3Wde+GV1zF
N3k69BJPayv+3tYt8zTDo1v0x9oKm711PMP1HJ35Ps7OwovJHbX+oWdHAPJbJL8o04TsM+OWrKlp
J7fh0rHT/0nnnaPzLsJnX/BbpS8CLKaQpYVjPPNPl2wnkEVjftPp96/fDz7cXnbiU3fo6L2TM7ak
GyvYv3InnRJ3vvPEx33wbDHc8olaN507C2/wwL4FnQt+0Qu/Y1H7Mf4Gs3u/3fOrF9FlfLrh17zc
hpW9z3YSTP921Z+QWxejxDC/kQ+kRz59o2vXYvxpQfhM8b8rmh4/T3qz+NTbwoZj1K4Wo3NzoazQ
m5y/Jr5LdYwD12M+855YZ0p+sUmwYoSFHUtMW7c2BjNwIPX8GTEDYvpEBxmZBvNwPVjRQPzy9hEc
23KBaA5ej7mOF/jki+MHxIEisxxqEMP0mB5Yz2RB9a8kcASQHy0TSJ6R7YqFfRKeIB7734b5CmKh
yHMkeEt9AhUuMJwzaq0BoRmsnE2wIjMAZ9pCi4Zd0MUXQ/S5MNvoBSjYd+dKfgvoIQPMdgI9yU2q
OTQQuw+oF4CVTAOEHymol5LU9BdiOMR2AkIfPcYIXaAb0bPgngVb0SfT2XgHmvTJNnYaJBGkl1Gt
H6M3YUvQma2z6AU+OzZG63ZCfd00H2Amgi3Xpu14X25BfVzXr/jB/hWhoHc08z8+yJo5RS9+ptxW
rr9FY3FSWBgZlSm9xs4zstqfq2UlzEVMIVQVyMGyCAzUJ2iyHV7OMDFxbDB0wsYRDRPQTUYClTGR
GhM+d7cAIlwx4rtMN+EOkRVUX9tlUnVy2smRD0D8FcVAWjCyhju+NJmhOnnX/WuBk1eg9+88x3V8
2Plh5+rChJq0nPjaN4rb1+LmXCkS/YvcIv5XqNDF+XstukzuB8nRsOUC2zyYgOr3GK5jRwrMArJM
AASYXe0dmYceO+lmEEvt/13vSTuV9zSbTzzuAR94buoixU+VfIs36yKJtoIMT+QivYt6TBL9DGSK
dlNzTxbuXvTvh8fgRwm75CvSOYVnCbLIAy7vnAJTgck56USJnUpghjaWzyzESn0izKyXD/NPt+Or
2SxJnb1algwa5M77uOIKOAq+DXgjKGLFDtJ3v1meqa/If0y2Yvy8QQPE/wZ97bKn9Xt97UHrT/ra
pN//r8gK4l5J5i286ZSPVJGme9XuyvCDZDTyTFx/OJ6NtQTqMKwYnZRUf25YcR+uYUNw8cClJFZ5
JJiey7xueV1dLHRZjE7tte+jKJLGryl0tft71Fx/V2KhtPPzjlovECgveV0Wqi0QVw21FASgBCJV
SyhraolAvG+opVUFojuo4Xjn5y1rDw5N6NkGiJ2rx2rO/e6bSUU5ktZ/uw6/aD83pkRrMRikpGj9
/mnK2uP9kwQVWq+NtKasvEKjuH6PNmVKVaWfo6GR9ktFU7ZgA1LRlD1VVSryjNX0XPtFoilrsAGR
aMqiUiKRiadoTdmDpxeJASYTNGJk1xcJhNfiIlFmnKH0M8BkA5/8+s9567li0JRt3IBgNGgmKic3
dXIH7bEzB2/Fzkyth7yj9rNEe4zMgTIyMRmk+WD5oD1G5uCtGJnd4TuCOvUt80j31y+Te+0MJsRk
/nAz+/KuJkfszHaTUnaR8x7FaE4tEFDvhxNqtWMHg6ZM1VL2X6Yb8I5xiEsK1MWnak8FkDJqP1jB
j3GMQjqdKpFMe7hNxQNvf6r5jsdNswxGxfVcw93g6yk68MCz05qu5MltiPGGjeXjOyfGG9GN9B65
GeqYHY4POSX0nb3JwsdRAz/kApfyRnqUkVDFIPkldClcPmPCsz/zMMcNhzbmeZPZnAQe5csI8Hk0
94MfMN/6x3tVx/wGksPFBlD2yqsbQCenSj7ou6Pq6dRhXFL8YsOlUq4zeaykLN5sYjNs7MmUXpp1
TIlF8fBxS+732BZWpcww819oWnG+SMXv8JESzhLCeRjC9KoCsxKYO6XMfJ6YJLcKzEpgplKYd6TA
VGByF/B7zFjIk8f0nJLMSpLZHdfwAwbfZULjMH5sK/wA0dgG/AAl35XkO/YD0s8dj0DhWQnPlGjz
jhSYCsy3ZBZgrQgsLZaWXJ2ft30RGymTWDfrpET0LYloSqOKPJVkfi/J7F5lC0oGZ7woNaoo+V1J
ZiXJlGsxUrtThaK4NxQGDFS6jw8pFT2JEHAzS7d+11XRLeoHcyyIzhfBvqOP7AMWXPoqFn+tJrNx
LDqqAUCpP9Ztwsq3W8kaVbRaiVZTSynvSIGpwFScyms6QxX7hji1DHN2ryUDFJYnQTHz/PS1zH/E
Uh7Z3JSMTEWSqh4Se8zsgaBIsrUkGS2NG6w8JwgsmJa5dXS8g3mKTBX3TxMOxMERaky+qqIdZfR1
CtfhI2WWK7NcaZzWapzDgzu92vJh3j6VqVp8+rnJwPTwVNQTz8T4bD5uPEauJ+Rf2H/RWcrbmfXE
jnLY+DRzUux/RuZ8QpHR8iH3KonshKAyB9H6/W3f56l9FNBon2vnhGDfNqKLfRYJ9qoyfELj7RXF
noGIv2eGkxhjt/++I12x3aXpn6lBddhcpSSDEJbQZhZmg/E9AodlV3vpv+/1rx+00eTyMl1qO3dK
WXRyxhDHSPZekqo/j8xrQdv45rpTaZfIHm9+fJ4fY25yeEbcNrcV5R8YTEOCFjM+jVj0ztsexlRE
k5nrO4iIBtlBbIe3dCzL2frEcnSKfQcdy9Sf+dzecEV9EJDYidcjS89ZY5tdn7iMZfe4VPBm4OWq
OqALiwFmsXsx35iY+uxM7AAbgp5sV7DDRiYWU4vYqOyCTikbjVI2qjLktUwb0JloBP+9xIxlFz3K
bUsuJ52IGQcR+Qma5MenpcMCXcKt2gxoArO448ouu5SANZJ2bKjQcfmNc7GjMzW9cMvhTCPTnk3W
cqlbgTnFfsZb6mVN+AwIZddEeikIU9N+LHhLSX7LLnuU25om5VeY8M2p83wR4Ty0i5kKuEf7zUeO
Vt6m5hkBL7s2U65IvXiUi8U3ioj75cM7W2Quv/dl2TVJk/e+rKeWCkT33sRe2FnyTXkt1Z6XZRfz
TJp5UhLGACvRxrKreCZtrAnlFLVcu+M90vESYtW9n3E9e8MOjjfmtYyfAilbUZ8YpocdpYju2DY+
Tcc+OOYkIKsbS/WAzG97aGUeR/j7WinwL7Ax8/FWVjYjLk+JZWTlYJfheHP14y2uaGqguTlBBB4t
GGqa9rnfqaAqpgumO2u2FxbcH+uVlddJYT3e76PqWuaqHhnxzd97Ybgjq/TytMqoslapydj5Q7sE
btVVSk3cQj2McCQHkATP7nENM6quYa5rdWoBepgPQjixLxizMaB1Zj5hZIuwBpY1f2bBGQ+v0gX2
1FvzwMjRsT6qqKUw1iVbKHYr6o31/HfsGngnbEQTKavBxT3WWT3+HtU11ik7BuGR402srq4GtWRn
6jIPtL+GZFD7eLMq6qfmJWAnMJHLYhVV1GgyqoklN4NjzYleTtUpXzpQy+dbtLhlvmj7WtxoGmuI
sCf4NDttGZHQIM5o2RhZYuVn0zZMnQaI4BB/o+vM98/IYhMQavnO7tBrmUw0ijAPUcANtjYGKiip
nUzIwVhzHS/g+AsvmQ+/eOp4dI04tvWssM3XnlHoh1DXRQrWD/290J+aC2QfYOZwwe7ICTmeg+3s
cVnL5FVxWCaFc5nJkImFcHMG0xkGH3cNdcdDpl5k4AXxqfF1eHzFnAQba4FUI1jqiVobjCyEWPDH
nBkbEXDp3TFPhyWOlBlBkUN2jMlByVFlf3ZU4HTD59beD6o43QWv+oAXCVN9u9Kw542PKzu7I8lp
k92I6q2fGixg3tq0Od2tKDw5tDuc6gme8wPTsuAUBYkaYUa2F1L78sVB5wIgYTjsItgybm3cFliw
Rx5+FL6fsKZ4J0bGFcYYPJp4FKFET3RuFPGIl/JWABcJX2gSxDECseK5IP37YXYcyGwUbmZfYpPd
JK5/uvFc8B4JG+329D4ZVY4gjaRYwMvIqKDxx9tcGFgCBVPT7qBZBqI6N51BX7vsaf1eX3vQ+pO+
lHeXW/7pdnw1m71cCazp8/HIxrhiEAne+MkAn3psDWWcAViu+xgXBobqARvppwjrWVgVVxntOF1e
MnfO42vVFWOBLHJmzcCVKkBOwaABFBKOC4NVh2EbFKj18fDq6rpSJiC/9SLWzUO1JV6hYmDrlFKZ
33gevRU8zLsgCiAc74nCUNeRnigwD0/VE112/nhOtisEosXriEI8borpqK9L7DBqPTqeGayiUrzQ
XA5DK9wm8zcud/dTKzosHC4R8B1Xt5dPxzncZ4oigfxdk86EcuV/hS+R1a7xIGufl9q+FjdqrY4i
vzpb4g5hXmEjODmokluGvDvcW+YHKFnIxFjGOzEWS5DfPRZu22OIKIewRwpKAHamFbRq6ZQrCACy
AuEO0pgRFiq+cMVTngKQgg5n3IldURdOLuJE0BQUcQmuJ1tOCY2SLfdd4726TKDrOF8FpFz78vQb
0gQDhANC/JFGiHIwy40V2VcK3HxTNM4ToDQsgHvJ81cHszCIpIWZGZF9kdILCuDDAHNlwG1ClX0x
5plS/ThaIW1y+wdaGOp6xzKIY9O5qmE3haDG1OExlZddEXiDpaI0DKZ4ec4CM5ieEVNeLrGSJKqh
oG2Fs6rwPYxviGEUMf57zPwZiQ4D9aHziwhcpEIiVa3wPYwvj8EPiSjjQ+EhPmHa6NQOK0fEsaVv
LER7pUBKArIC9zC4OnWpbgbPhOqe46O4RJjZHmPRJFCgjX1gHcwVtR/hsfsbvhGsKehBVewcWXUK
/GlYiHYBUqThuFmTl4qLqXjNEONMv/WnF9zayxpjxjKzlnvlaA8x/qDouB5BzpRCztco7PnT435E
qC3zK8szE1BJwL1Mhug1eAIxa+5yDgoDOP8HAAD//+xXUW/aMBD+K1aeNqm0TtImEA2kTkzbyyQ0
6CbtzSQHsWTizDGl7Nfv7CQtoUkLtJMmrTwAsR37vvN3991FquDJt6FDaX/gfby+dMimHJqolsEx
LNha6Mczk52h0YdNlE+U/ZnqrQDc8paJoTMRjGczuNPOhZlU5RrBsmW9ArLezdTMXlTT+FttpVoN
O3SfTaTJ3UpERc5iGDq5ggLULTgjUn1mKRC2hEwT/ALFNBSEkQw2REEulSYLqYjGRQqYWBG5MCbq
0lBjBM8KNJAnQyekxodsrVOJLrwRiscp+cHBHoAOMLMJ7j90POpe9lzao+7MpZEXRpT+dCwiXHJ/
L4Efhn1ajh/gsW6keptDw2pEgGZbDLk5Nt899v+mg2Ov2TkjLEsIOgmULvD6ma7pwDMtLR9YVmxA
NfzaYIPbxYY9HtBBj/ZnbhBRr50HLn4G3ivw4F1J4xj4LSQklYXuGWrUyBpQaoo0IHldkDCCniB4
F7BP10E4Hh8DbLRiWzI3Fq+kwbBQctV1Ga0I/NMQeP32qzk+REdnBM6X52STQva8w21WPiGjDF7L
3I7caYhUJs0ENMR1iNhhsZSK65QUIHAGL2m+JdMGVMxxuwnnBCd6r7tfB0pekExqUqxzIwQlEgMx
Fhz14gATKpRjQA2k9Hi6d9jVOLmV5lddNDfjOxrUlnsSELjIClrQtc0z8e63069KZC/0CtpnSokR
3g4qtEBZT8jGEM5cTa3hCc6hXGN+M86qXzH/lZU9HLG/VgYbOS7swtzpuge0O67rd23zL7juPuc/
4Zy9ID1ehEbvO3iqKgJ8a1SaRxR0o3NCZu1xiBf8VtE0C1ydKqm1wLJWwa81FJisbbhkcv9+3jzX
9NwYncUzprnMel+wWiLX3ycEK8GG3xrJY3Ba1Ht/Wa9NZmwY/SAaLw/GilWYhU3zdL5/zmNSBVdh
GNheybY6jSxQp4adfrNabvuUsg06pn+sE0KBtcjkHqyR4wPMmOJLZqkf+Ngl20I1X05/o5GboYNF
ObUCmeL/oO/3y+Y2X35l5hwtcxy/dK2eKL5Mcaf6cY4BKVdmC99WeAIWO7MpsASwgwypFZGFlHrn
cbnW9pGWx8VSmP6zam/NK7bFTmT8WXEUxkjwDCZcx2ilj14vW+zSG1YB5zLZlpIo4/UK65rRHwAA
AP//AwBQSwMEFAAGAAgAAAAhAB9YTWFcAgAA/AoAABEAAAB3b3JkL2NvbW1lbnRzLnhtbORVy27b
MBC8F+g/EDwlB1vyI6ktRArSugUKFGjhJgjQGyutI6J8CEvKiv8+S0l2+kIaBegluUgQuTs7nB0t
z85vtWJbQCetSflkHHMGJreFNDcpv7r8MFpw5rwwhVDWQMp34Ph59vrVWZPkVmsw3jGCMC7Z0m7p
fZVEkctL0MKNbQWGNjcWtfD0iTeRFvijrkaUWwkvv0sl/S6axvEp72Fsyms0SQ8x0jJH6+zGh5TE
bjYyh/61z8DH1O0yVzavA+e2YoSgiIM1rpSV26Ppp6LREcs9yPahQ2y12sc11WOqFSga6odWHe3G
YlGhzcE5Wl11mwfESfxQ7V7AAHHIeAyFX2vumWghzQEmuOO3/h+aN6bmRV3tKEDdH4S0yO69xJpE
FiknEzaJqH1pqbdXCmVesmsJJYT1QniqNI0n81G8HMWLy8lJMjtJ4vhb2JVGeimUo7zrFrmiRXJ3
sSbYeLGcvr2Yh7h2aQUbUSv/007gUn3B9vXV7xRQ6FaolL/rzH4Jt55H2Vl0CGtjsUvBv6WsYQNI
/xT0eX2sMMb61n4U0CF2UHtygdVydvrm5H17Dp99ZK4UCGxna2S5JUQ0gYhv6VByINU+Se3g8j+F
nQwWdvEChEWolMiB8dU6QRBKk0rSl4y3HyO0tYeCD5V6uImXL1nr0jr/RKlng6WeT5+/1OE+TVxF
xk55heAAt8Czo/kxuzCuAWRHNIDCHPE0xekiYcKwz5/Wx0w6pmV7t4zZQNPPBg+Y59SJMG999l+m
yWw6dHLPZ8/H4v8QdsDooCuyvxxddgcAAP//AwBQSwMEFAAGAAgAAAAhAONaSSeXBgAAVRsAABUA
AAB3b3JkL3RoZW1lL3RoZW1lMS54bWzsWU1vG0UYviPxH0Z7b2MndhpHdarYsRtoUqLYLepxvDve
nWZ2ZzUzTuobao9ISIiCOFCJGwcEVGolLuXXBIqgSP0LvDOzu96J1yRpI1pBfUi8s8+8318zvnrt
XszQIRGS8qTt1S/XPEQSnwc0CdverWH/0pqHpMJJgBlPSNubEuld23j/vat4XUUkJgj2J3Idt71I
qXR9aUn6sIzlZZ6SBN6NuYixgkcRLgUCHwHdmC0t12qrSzGmiYcSHAPZHSyolPjSFpE0TLyNnHyP
AY9ESb3gMzHQxIm7x4CDg7qGyKnsMoEOMWt7wCrgR0NyT3mIYangRdurmY+3tHF1Ca9nm5hasLe0
r28+2b5sQ3CwbHiKcFQwrfcbrStbBX0DYGoe1+v1ur16Qc8AsO+DqlaWMs1Gf63eyWmWQPbrPO1u
rVlruPgS/ZU5mVudTqfZymSxRA3Ifm3M4ddqq43NZQdvQBbfnMM3Opvd7qqDNyCLX53D96+0Vhsu
3oAiRpODObR2aL+fUS8gY862K+FrAF+rZfAZCqKhCC/NYswTtTDYYnyXiz4gNJJhRROkpikZYx8i
uYvjkaBYc8DrBJfe2CVfzi1pZkj6gqaq7X2YYsiKGb2Xz354+ewJOr7/9Pj+z8cPHhzf/8kScnZt
4yQs73rx3ed/PfoE/fnk2xcPv6zGyzL+tx8//fWXL6qBkD8zcZ5/9fj3p4+ff/3ZH98/rIBvCjwq
w4c0JhLdJEdon8egmLGKKzkZifPtGEaYlndsJqHECdZcKuj3VOSgb04xy7zjyNEhrgVvC6gfVcDr
k7uOwINITBSt4Hwjih3gLuesw0WlFW5oXiUzDydJWM1cTMq4fYwPq3h3ceL4tzdJoXLmYeko3o2I
I+Yew4nCIUmIQvodPyCkQrs7lDp23aW+4JKPFbpDUQfTSpMM6ciJptmmbRqDX6ZVOoO/Hdvs3kYd
zqq03iKHLhKyArMK4YeEOWa8jicKx1UkhzhmZYPvYBVVCTmYCr+M60kFng4J46gXEGhtFVJ8JEDf
ktNvYChZlW7fZdPYRQpFD6po7mDOy8gtftCNcJxWYQc0icrYD+QBhChGe1xVwXe5myH6GfyAk4Xu
vk2J4+7Tq8EtGjoizQJEv5kIbUWo1U4FjmnyT+WYUajH1voXV46hAD7/5lGFT9/WQrwJPakqE7ZP
lN9FuJNFt8tFQN/+mruFJ8kegTCfbzzvSu67kuv950vuonw+a6Gd1VYou3pusFOxmZHjxSPymDI2
UFNGdqSZkiU0iqAPi3qjOSKS4syURvA1K+wOLhTY7EGCq4+pigYRTmHCrnuaSCgz0qFEKZdwtDPL
lbQ1HqZ0ZQ+GTX1ksAVBYrXLA7u8opfzk0FBxrSb0Jw/c0YrmsBZma1cyYiC2q/CrK6FOjO3uhHN
1DqHW6EyOHFeNVgsrAkTCIK5Bay8Cod0zRpOJpiRQNvdNt/cLcYLF+kiGeGAZD7Ses/7qG6clMeK
uQyA2KnwkT7mnWK1EreWJvsa3M7ipDK7xgJ2ufdex0t5BM+8pBP3RDqypJycLEFHba/VXG56yMdp
2xvDoRa+xil4XeqhD7MQbod8JWzYn5rMJstn3mzlirlJUIeLCmv3OYWdOpAKqbawjGxomFdZCLBE
c7LyLzfBrBelgI30V5BiZQ2C4Y1JAXZ0XUvGY+KrsrNLK9p29jErpXyiiBhEwREasYnYx+B+Haqg
T0Al3E2YiqAf4CZNW9u8cotzlnTl+yuDs+uYpRHOyq1O0TyTLdzkcSGDeSqJB7pVym6UO78qJuUv
SJVyGP/PVNH9BK4KVgLtAR/ucgVGOl/bHhcq4lCF0oj6fQGTg6kdEC1wGwuvIajgRtn8F+RQ/7c5
Z2mYtIYTn9qnIRIU+pGKBCF7UJZM9J1CrJ71LkuSZYRMRJXElakVe0QOCRvqGriqe7uHIgh1U02y
MmBwJ+PPfc4yaBTqIaecb04NKXqvzYF/e/KxyQxKuXXYDDS5/QsRK7qq3W+25723rIh+MRuzGnlW
ALNSK2hlaf+KIpyz1dqKNafxcjMXDrw4rzEsFgNRChc+SP+B/keFz4gJY91Qh3wfaiuCnxo0MQgb
iOpLdvBAukDaxREMTnbRBpMmZU2bjU7aanmzvuBJt+B7wthasrP4+5zGLoYzl52Tixdp7MzCjq3t
2kJTg2dPpigsjfOTjHGM+V2r/MMTH90FR2/BBf+EKWmCCX5VEhhGz4HJA0h+y9Fs3fgbAAD//wMA
UEsDBBQABgAIAAAAIQCjPUhHjggAALMhAAARAAAAd29yZC9zZXR0aW5ncy54bWycWklvI9cRvgfI
fxB4jqy3L4w1xlvjBDNJYDmX3FpkSyKGZBPdLWkmvz7VJNsaxR8NI7qIfNVVXa/2hd//8GW3vXpp
+2HT7W8X/Du2uGr3q2692T/eLv71c712i6thbPbrZtvt29vF13ZY/PDhj3/4/nU5tONIjw1XRGI/
LLvbxXO/Xw6rp3bXDNe7zarvhu5hvF51u2X38LBZted/izNGf7t4GsfD8ubmjPRdd2j3RO2h63fN
OHzX9Y83J8zcrZ537X68EYyZm77dNiMxPDxtDsNMbff/UqNXPc1EXn7rEi+77fzcK2e/9eT5uq9d
v/4F4/ewNyEc+m7VDgNJdrc9XXfXbPYzmWH7e+ic5Plxc983/ddviHwgtb1s2tcr+tcQpf0k6O3i
Zjr/T9ft6PzQ9isSNNmCYSfA2Derzz+1L5vJRobjs+v2oXnejj8393djd5ipWeZOGE9fD0/t/qii
f5PVzHAl9Am+emqI5tj2d4dmRRdN3X7su+383Lr7ezembnfoSQ5nDPrWjMd3k6muh4nh6cNPXTfO
aIw5L2JQJ4wJ+gZhTEdjIEQabcIFSDYcQrQWRkKI4cVkCHFaVA8hwegqICQqIgchyTKFqWWlE4YU
GW1C1DjTXEMcTn8e8sa5TA7KjXNV+FnT77XAuebxbCP/AxGq+Ah5E0ZxKAMuVSxQC/SaoqDmyKgD
L/A9hosCbYeTXV+Qm1VSYhlY5aKF77G6RIzjtPP4ps74jKl5JbD18mCkx1qIXGlMLXKLrYpHJRzW
T9SZYVlnySLGKcJfsIOqUoX+IxiPHkPIFDXUqRBSc8ibIL1VKGtCyakizQnDuYVeIox1GeNE4QyU
gUhSKagfkYVJ0EJElj5hGRRuIuRAkgfXcyR/73NSaseg/0hpDPZ6qckbYQyRRrCEqRlJkRlJVFqj
cISVTioPI4V0thZMzdscMQcU93C8lkm5C+8p0l/gujIjoKwVs1pDDhTnLEMbJYhKAklHKVY4lAEZ
TsB5gSAJRz6lWcG5URlrsP8ox0yB/qMcTwXz5kSw+D5eFByvldeuYIkGES/wFjnDGUMlaz2WdWbe
Qm9UmYcAvURVxiukpjmTCUpHcykMxtGKOZhltDZCQLvWhlkBJUooAcde7SULUKI6CFahjeogbUnI
EnVQtWoIIS3g3Kgj5xHGKh2FcVg6UYeAb5qIGpZ1koxBzekkSTyQa/KRCq1XJxMVlkFWDOdtXdgF
29HkvwXfpwgRMAdFZWYg18U6je9TjZIQx3BbOLQDCtfFQEs0UvBLEG1whDXScgd5I4i9ANHWzj3G
+8xktHUB2psxlmOdToCK72ONUVgGjvMMM63xUmKfM1kGAy3EZEPJHmnOFGM0jDumco+zpqlWM3gf
y5jFOdgyqgKgvVnOhYXeSBCKiohrq4zHdTylbRExjhUJR2Vrqd6Accc66TPmjSrVCO3ARh5w5e0Y
dSxQ204w6S5AhMUVsZPC4ojkpKTEjeTmpE4MWpWjjB6gDJxSGVc1TpkkMdeKJIepUZHmYLR01GNc
uKmnCgVa7+Wu2gWZcQXpouAXuE6y4HjgiqwSattV6vWgRD3FfpxLPBcS+7YXmughzXnJE+4KvDTU
t0EcxZSDPuepbw1QolPThn3Ba0VNE3yPVTFias4kXFv6oByeBVDQsRLGa59MxR2YT9YUrIVki4XS
CYw8Fd4n8EseHBRNFqD1BsN9hDGRIMXBfBqMyBVzYI3QMO4EaySe4hDEC9g7B/IsXHERpBZo1yEo
kTHXVLsUqJ+QRVYYpzB24aZVOOwLoQqvofVGRsKBcouM4j+UAYVri7upKLTEs4AorVaYA61LhfYW
ta54UhJpmMdgtIzWWDxDiU7QHAf5XPTUhSYICcxV/J4kvcfSSTLgKBYTpVpoiTFZiSclMXODszNB
koHZOWZLxTe8D9kOnubFohPuNSNFUQ/1kxh1TdBPEzWUHkM4oxCLeKNineMeI2nSArTR5KjggjdN
lDJw3k6UGAqmFmXAVpUiWRXGScLhqW7KXOMaNhUSApYBzW6xJaaqK66EMqdpOLSqzGXBHXKW3Eto
vZkmZjhSZEVFEn6Posk2jORZc2qnkLaz1h5HimzJEKB0cjQB9z850WiuwPdkmRi+abUqQP8p0jgP
o3LRLOGeqWgh8dSweJkklAG5CGcCcV28rfMW5X3PVAIreCpVgq4JZowSyHqh5kriGlf4JQmNM20p
4kJ3SJAaYKSggVDVmLdCHSWMFJVqPjxdocEcz9BCKmUmXDlUwRWe3VbJjcQcSJpfw+hfJYVrzAFN
oi3GMSoxmGUqJVpcCVUnaGCELKQ6ExK00eqoo4R5rlJKxxVxpbk/tsRKGyhsITVzStCQN5pt2KMd
3JzWd7TH2y2n/es/+/lTpV3g1e60nkzN7r7fNFefpg0tLf92y/v+c9zsZ/h9S5vi9lvI3fP9DLy+
PgEG2nBuK+0bZwAtZ0+Q9WY45PbhSHj7qekf3ygfBbhb9vCUtp9/+4XatCxt+7/03fPhRPW1bw5/
3a/peH4hp0nuCbbZjx83u/l8eL6/m7H2tKj9BvS8X//jpZ+Qbt4E9LocabfeThL62Owf5+3mur2e
y//Vtr+b9u/tp+ZwoMUqPXL/yG8X283j08gX9HWkb+um/3z8cv8ozjBxhNG3CXb80qymm9HT5w/T
A6eP9NT5w9uZnM/k25maz9TbmZ7P9NuZmc/MdEa747bfbvafac89f5zOH7rttntt1z/Oh7eLXx1N
8qLfJTw1h5b0Om2oycC608F5ZT1cvSzbL7TebtebkX7acNisd82X24Vip8L1/PS2+do9j++enShN
Dx/enV6tm7GhZflRVe+QSXW/4uV1uW5XGzLIu6+7+7eF959OjG83w3jXHpq+Gbuernxc0f/5SJko
tadfW3z4LwAAAP//AwBQSwMEFAAGAAgAAAAhACf+mD85AQAApAIAABQAAAB3b3JkL3dlYlNldHRp
bmdzLnhtbJRSy27CMBC8V+o/RL4Xp9BnRIKEEKeeWvoBxt4QS7bXsk1S+PouCW3p41BOXu/OjGd3
PZ29WZO1EKJGV7LrUc4ycBKVdpuSva6WVw8si0k4JQw6KNkOIptVlxfTruhg/QIpETJmpOJiEUrW
pOQLzqNswIo4Qg+OajUGKxJdw4ZjXWsJC5RbCy7xcZ7f8QBGJHIQG+0jO6p1/1HrMCgfUEKMZMSa
Qc8K7VhFHpVu4/HMukKrkk3uJzfj+/HjbV9fo9otdEu1Vhjqn/ED2orwBHX6yOaf2We9af5Ir9D/
xs4xJbQ/8uRnrsLhjfTFcTRZRsC4LxnNnwIvJM26jyUapLmKbcLBhjlxdh5z/c3Redxw2vk5VN4v
oW96CKvpcPZ7QZ+01XtYYpgH7CIEWgDVT/5W9Q4AAP//AwBQSwMEFAAGAAgAAAAhAKuIgGpTAQAA
iwIAABEACAFkb2NQcm9wcy9jb3JlLnhtbCCiBAEooAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIySX0vDMBTF3wW/Q8l7m3RVGaXtQGVPDgQ3Jr6F5K4NNmlI4rp9e9M/qyv64GN6zv3lnJtm
q5OsgyMYKxqVozgiKADFGi5UmaPddh0uUWAdVZzWjYIcncGiVXF7kzGdssbAq2k0GCfABp6kbMp0
jirndIqxZRVIaiPvUF48NEZS54+mxJqyT1oCXhDygCU4yqmjuAOGeiKiEcnZhNRfpu4BnGGoQYJy
FsdRjH+8Doy0fw70ypVTCnfWvtMY95rN2SBO7pMVk7Ft26hN+hg+f4zfNy9vfdVQqG5XDFCRcZYy
A9Q1ptjVRrAq2AuoIMNXQrfEmlq38fs+COCP55k3oCUVKsO/Xd2ggaPoXq1Iesd09Df3RYfrgQc+
ejoUvSj75Ol5u0bFgsR3YUxCEm/JMiX3KSEfXcDZfFdl+CDHmP8mJmROvACKPvH89ym+AQAA//8D
AFBLAwQUAAYACAAAACEAPBEL3fQIAACGRwAADwAAAHdvcmQvc3R5bGVzLnhtbLxc33PTOBB+v5n7
Hzx+59omXAoMgWkLHMwAx5F27lmxlcaHY+Vsh1L++lutbEWxrXi3du+ptSztt9of3yqpti9f/9ik
wXeZF4nK5uHZb6dhILNIxUl2Ow9vrt89eRYGRSmyWKQqk/PwXhbh61e//vLy7kVR3qeyCEBAVrzI
5+G6LLcvTk6KaC03ovhNbWUG71Yq34gSHvPbE7VaJZF8o6LdRmblyeT0dHaSy1SUAF6sk20RVtLu
KNLuVB5vcxXJogBtN6mRtxFJFr4C9WIVvZErsUvLQj/mX/LqsXrCH+9UVhbB3QtRRElyDYrDFjdJ
pvL3F1mRhPBGiqK8KBLR+XKtZ3W+iYrSkXaZxEl4ohGLnyDzu0jn4WRSj1xpDQ7GUpHd1mOxfPLm
ravJPJTZk5uFHlqC3Hko8ieLCy3sBLdZ/3S2uz3YPDyhKlsRgeFAjFiVEhwI/tBC00Q7enI+qx++
7lIYELtSVSAoAMBcsfDYsDj4Fby8MFECb+Xqo4q+yXhRwot5iFgwePPhS56oPCnv5+Hz5xoTBhdy
k7xP4ljqoKzGbrJ1Esu/1zK7KWS8H//rHYZYJTFSu6wE9WfnGAVpEb/9EcmtDjEQnQnt4c96QarF
Fg4OKrRL9tqYgQYqDv5bQ54ZH3airKXQaRSg/keBcNe7wUATvSN3AyiXpet0uIinw0X8PlwEBu8w
W5wP1wLIc6hHTGw4UUl3aqkiE3yuHabPj4SsXtGKot4VraDpXdGKkd4VrZDoXdGKgN4VLYf3rmj5
t3dFy51HV0QCiasZRVO0Bimxr5MylXr9UQI6G0h1VakJvohc3OZiuw50YW2qfYwsF7tlSVMV6fTh
ZLkoc5Xd9loEqrNO3Qdz8tvNdi2KBE40PaafDDT9tVimMvgjT+JeqN9N8LX2hAeTzhL2JRWRXKs0
lnlwLX8YjzLWf1bBwpwyepUb6NaPye26DBZrLLm9YDOP0f2WMPI/JgXa4GgyzTxb6RNO8uHME5d+
4Z9knOw2tWkIp5GZ4XOGmxsQqOJxEz3VLmpnV+8utAMoWzDlgr8FlE/Q3xQXvnztY4r+phQ9UD5B
f1O4Higf4+O4f9lM80bk3wJSep2zc/dKpSpf7dI6B3rp4ZydwRaCtgV2Elv5JJI4Z2fwAX0GF1EE
n9woccr2xZ5HGShsdxgUTDb6XthOadDeGWNHbAc1sCYMrGFcywBik+5X+T3RXzxxiwGytD1r9qbz
1GMBKEGkM/RfO1X2n6EnHs6jonzI4OuSQgY0tKkn86hoVTyZesfw8bDCxwAaVgEZQMNKIQPIEx/+
M4+tiXSQ4cWRgcWmZVvFMOzIzHzOZmYLxCsBI9VNwvnLk73+WGjXTQIK20HtuklAYXunUcts3SRg
jVY3CViequH3kcupnE2x66YLZE8ChB2NQ94EoHHImwA0DnkTgIaTdz/IeORNwGJzg+VUl7wJQDiF
81HfArnkTQBic4Nhu+o7o7ruoZTjH25HIG8CCttBbfImoLC94yNvAhZO4URCA8tSHQFrHPImAI1D
3gSgccibADQOeROAxiFvAtBw8u4HGY+8CVhsbrCc6pI3AYhNDxbIJW8CEE7hcEMneWPWPzp5E1DY
DmqTNwGF7Z0GodpDKgGL7aAGliVvAhZO4QRDhYXBzdnUOORN2NE45E0AGoe8CUDjkDcBaDh594OM
R94ELDY3WE51yZsAxKYHC+SSNwGIzQ2d5I3J+OjkTUBhO6hN3gQUtncahGp5joDFdlADy5I3AQvj
ZTB5E4BwykOBODsah7wJOxqHvAlA45A3AWg4efeDjEfeBCw2N1hOdcmbAMSmBwvkkjcBiM0NneSN
OfLo5E1AYTuoTd4EFLZ3GoRqyZuAxXZQA8tSHQFrHPImAGFgDiZvAhBOeQAQZhHHTeOQN2FH45A3
AWg4efeDjEfeBCw2N1hOdcmbAMSmBwvkkjcBiM0N+p4t3BclX0898wQB9Z5BfauBDDjxOIkKWG3w
q1zJHDqZZP/tkIGA9Q4ZiJ7woG7xUqlvAe1i99QTIGSoZJkmCq903+MtHacRYXp+pJPg+s+r4L1p
gGmtw5A6vHkD3UNuuxC2J+nGIdCzvN9Cy862vlmupUGDkO7rqlqAsA/tAzQEVW09erHu84GJ2FRV
DePfbStU/B163uJ6zunpdDY9fVb1RkCvmBbidmFBy9Ufl1X7E74GjRG4rWq0Bl0j6Kg6omp1Yd7e
YcLr8k3FPbfqUfl9S0e9hep2/f4MZuYd3PGEIb/epb5JfkRnvGl+1MYBTjFR0VYQmrtQpT4N7a0s
nF0uU+MN+OVDph0GzYH4FzgTGPEPYcTC+yuZpp8E+q5UW//UVK5K8/bsFKtpQ9RSlaXa+NfneNkc
NekSACZ2lTGPehN+22e7zVLm0C12xP6fla5C2NV2GN7m3qxxt81P0B6jn2p1v24HqWeTDVoDkgx7
Apphi29MuwDqtBTQrven7r5rpSO0Gn6rx63AK8if4TF0mN3Pnk8uL54aqb72RwyqqvnxqX3obn6s
Gi3hx0EH6Ty8gk5WlYpC+xG7Q50hE/37BtA6Y386DaB1j0yrARQWg4s41BPtCohi7L9sMuWhrf0O
DPa+aHixk8Bwg50+ZfrT77yKmh/F7Ez72lS4Uhvdz7w/ADQNKrJMQdOrbkHN7bmkKzf8Vh1Cp73W
3Dcln82MpwonJs1Yv3G6eaIyTidTOHYpdXdRl0nc6u2GliN3H6SPY6UWYXBJYm9f6PbCTbr2NWP9
9j04VxxJ7qZlmtFYvUeGHprgDtbYKU4x2oPPaEdjFT5C/COjdqV1wrWopnRFbMsmGcR2XeVaLzti
usJ/7LCuqHRp9nBVwM/Rg9Ddii8Oqzn+UHRstreJ325jByLPQN2RZTsdmkawL9AL8A8O4F8e4K9k
KvOze4u3qv/zYM828G8SyAedB34Y6jbHpUhTpbqPj9U7/gHSEboPE7IZD78iRBf8T5ZtnmWuxVpt
hHOA3A9ExTysnlDDPUcOKdzUwtI0cDOWXc/5s9l/xnFT2sEaO58f2d7kmgRki0fI4tV/AAAA//8D
AFBLAwQUAAYACAAAACEAgJ1ECeEBAAApBgAAEgAAAHdvcmQvZm9udFRhYmxlLnhtbJyUwW6jMBCG
7yv1HZDvLYbQbhOVVN3sctzDKvsADgzBEraRxwnN2++ACTkk2YaAhMSMGWY+/7/f3j9VHezBojQ6
ZdETZwHo3BRSb1P2d509vrIAndCFqI2GlB0A2fvy4dtbuyiNdhjQ9xoXNmWVc80iDDGvQAl8Mg1o
ypXGKuHo1W5DU5Yyh58m3ynQLow5fwkt1MLRv7GSDbKhWntLtdbYorEmB0RqVtW+nhJSs+XQXdAu
tFDU9UrUcmNln2iENggR5faiThmPecaf6dndCZ91TxZ2FfJKWAQ3LuQ+XAol68Mxiq1E9IlGurw6
xvfCSrGpwadQbimxww1P2S9OV5xlzEeilCUU+FiNkZia8lc0rJmNEdoeaqyv0y+J5n0dilCd4au+
z9DvzxmJtVSAwW9ogz9GCY/qnEjMX4jEM/HoyMwmEbF93Z7gBCLxxzg/TbKiUb6/Jsf5T0TmXxPx
dW4nsiLxmVrgFXH8IBTzO8WhTAFWX1BHKT+huCCNiOY+k0Z2SRo3gJgsDVHR1v0HQ+eOThPJ/R7R
xq3tDtaHBqYoZFD27OSZUeveRSeF9A4hp133DOe9riYoRCg6PK6R6TziuXSemXZ63OeVc4nwZHTP
FBJfnx7DMYLLfwAAAP//AwBQSwMEFAAGAAgAAAAhAONVOGjyAQAA8QMAABAACAFkb2NQcm9wcy9h
cHAueG1sIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnFNNbxshEL1X6n9Y7T3G
dh0nsjBR5ajKoU0seZOcp+ysjcwCAuLG/fUdduMNbnoqp/nS4/HmwW9eW10c0AdlzbKcjMZlgUba
Wpntsnysvl1cl0WIYGrQ1uCyPGIob8TnT3ztrUMfFYaCIExYlrsY3YKxIHfYQhhR21Cnsb6FSKnf
Mts0SuKtlS8tmsim4/Gc4WtEU2N94QbAskdcHOL/gtZWJn7hqTo6Iix4ha3TEFHcJzqas6HAKxtB
V6pFMabykPA1bDGIL5z1AX+2vg7iej7hrA/5agceZCTxxOVsesVZVuBfndNKQiRdxQ8lvQ22icVD
p0CRADjLRzipskH54lU8JiJ5yr8rQ1Rml5z1EXHzsPXgdkFMponhkPKNBI0rerxoQAfk7L3A7xDS
YtegiDI/xMUBZbS+COo3rXZaFj8hYJJsWR7AKzCRpEtjfdLF2oXoRaWiJmzq9XkX5mN5rGaCRKNZ
Cs4HU7HnQI1zdt0N4aGht8V/kJ3kZDsOPdWMThYOd/yFurKtA3MkV+wVFBuF5MtQ3GP8Zf0+0ELf
+mkD+/DoKnubTPSm7Hkxs8OziruNA0lLm0+v5rkxshbfkH+wpk2fAN8L/I624HW6lUxltlifZj42
ktWe+h9MbhiN6XTeOtXIH8PXEn8AAAD//wMAUEsBAi0AFAAGAAgAAAAhAOvTUqh0AQAAowUAABMA
AAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEAHpEat/MA
AABOAgAACwAAAAAAAAAAAAAAAACtAwAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAmzu1wwkB
AAC0AwAAHAAAAAAAAAAAAAAAAADRBgAAd29yZC9fcmVscy9kb2N1bWVudC54bWwucmVsc1BLAQIt
ABQABgAIAAAAIQD9Afc9yBIAAGHLAAARAAAAAAAAAAAAAAAAABwJAAB3b3JkL2RvY3VtZW50Lnht
bFBLAQItABQABgAIAAAAIQAfWE1hXAIAAPwKAAARAAAAAAAAAAAAAAAAABMcAAB3b3JkL2NvbW1l
bnRzLnhtbFBLAQItABQABgAIAAAAIQDjWkknlwYAAFUbAAAVAAAAAAAAAAAAAAAAAJ4eAAB3b3Jk
L3RoZW1lL3RoZW1lMS54bWxQSwECLQAUAAYACAAAACEAoz1IR44IAACzIQAAEQAAAAAAAAAAAAAA
AABoJQAAd29yZC9zZXR0aW5ncy54bWxQSwECLQAUAAYACAAAACEAJ/6YPzkBAACkAgAAFAAAAAAA
AAAAAAAAAAAlLgAAd29yZC93ZWJTZXR0aW5ncy54bWxQSwECLQAUAAYACAAAACEAq4iAalMBAACL
AgAAEQAAAAAAAAAAAAAAAACQLwAAZG9jUHJvcHMvY29yZS54bWxQSwECLQAUAAYACAAAACEAPBEL
3fQIAACGRwAADwAAAAAAAAAAAAAAAAAaMgAAd29yZC9zdHlsZXMueG1sUEsBAi0AFAAGAAgAAAAh
AICdRAnhAQAAKQYAABIAAAAAAAAAAAAAAAAAOzsAAHdvcmQvZm9udFRhYmxlLnhtbFBLAQItABQA
BgAIAAAAIQDjVTho8gEAAPEDAAAQAAAAAAAAAAAAAAAAAEw9AABkb2NQcm9wcy9hcHAueG1sUEsF
BgAAAAAMAAwAAAMAAHRAAAAAAA==

--_002_5BCBA1FC2B7F0B4C9D935572D90006681521304DDEMUMBX014nsnin_--


From nobody Wed Oct  1 06:28:00 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AF0911A038E for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 06:27:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.778
X-Spam-Level: 
X-Spam-Status: No, score=0.778 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b65-V77ezLcH for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 06:27:55 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9F23D1A0324 for <dime@ietf.org>; Wed,  1 Oct 2014 06:27:55 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:52512 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XZJwb-00018w-Q3; Wed, 01 Oct 2014 06:27:54 -0700
Message-ID: <542C0155.7050908@usdonovans.com>
Date: Wed, 01 Oct 2014 08:27:49 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>,  "dime@ietf.org" <dime@ietf.org>
References: <542AC192.9090600@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/H_03hdv3L74xPNsjB6b3QBuEdoQ
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Oct 2014 13:27:56 -0000

Ulrich,

Yes, but the proposed resolution for #70 is that a DOIC supporting agent 
strip host overload reports from requests that did not have a 
destination-host AVP.  The justification for this has been that the 
client might not send to the host and that would cause the client to 
save extra OCS entries.

The client will need to be prepared to handle overload state received in 
this type of a request when there is not a DOIC supporting agent, so 
there is no savings in logic to be implemented in the client by having 
DOIC agents strip host reports.

In addition, the client is the best place to determine if a host report 
is useful or not.  In the many cases the client will send subsequent 
host reports to the server.  This will be the case in many session based 
applications where the first request is realm-routed and subsequent 
requests are sent to the server that handled the session initiating 
transaction.

I'm ok with adding wording to the specification along the lines of "the 
client SHOULD save the OCS state for all received host overload 
reports.  The client MAY not save the state if it knows that it will 
never send a host-routed request to the server.   This might be the 
case, for instance, when the client always sends realm-routed request 
for the application."

Regards,

Steve

On 10/1/14, 3:38 AM, Wiehe, Ulrich (NSN - DE/Munich) wrote:
> Steve,
>
> I agree that there may be cases where the agent that selects the server does not support DOIC, and consequently transparently forwards a host-type OLR to the client which then receives a host-type OLR in response to a realm-type request.
>
> The example flow in Appendix B, however, assumes that the agent supports DOIC.
>
> Please find the proposed modification attached.
>
> Ulrich
>
>
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Steve Donovan
> Sent: Tuesday, September 30, 2014 4:44 PM
> To: dime@ietf.org
> Subject: [Dime] DOIC #70 - Proposed resolution to core issue
>
> All,
>
> The core issue raised in issue #70 is whether a client can receive an
> OLR of type host when the request sent by the client was realm routed.
>
> I do not support the suggested change as there are scenarios where
> clients MUST be prepared to receive the OLR of type host when the client
> does not do server selection.  This is required for the scenario where
> agents do not support DOIC.  If the request does not contain a
> Destination-Host AVP then agents will be responsible for server
> selection.   An overloaded server will send an OLR of type host that
> will find its way back to the client.
>
> It is true that this might cause unneeded OCS entries in the client in a
> scenario where the client will never do server selection for that
> overloaded server.  This concern can be addressed by making it up to
> local policy whether or not the client saves OCS for the overload
> report.  If the client knows that it will never do server selection for
> a server indicated in a host OLR then the client can choose to not save
> the overload report.
>
> Based on this, I propose that we close issue #70 without changes to the
> DOIC specification.
>
> The discussion about the handling of a mix of overload abatement
> algorithms should continue.  We can open a separate issue if needed to
> address that functionality.
>
> Regards,
>
> Steve
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


From nobody Wed Oct  1 06:34:06 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 27DD91A044F for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 06:34:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.778
X-Spam-Level: 
X-Spam-Status: No, score=0.778 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2VAnckDgcdhy for <dime@ietfa.amsl.com>; Wed,  1 Oct 2014 06:34:03 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2B06E1A0410 for <dime@ietf.org>; Wed,  1 Oct 2014 06:34:03 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:53367 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XZK2a-0006Q2-76; Wed, 01 Oct 2014 06:34:02 -0700
Message-ID: <542C02C5.40202@usdonovans.com>
Date: Wed, 01 Oct 2014 08:33:57 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>,  "dime@ietf.org" <dime@ietf.org>
References: <542AC192.9090600@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/WNAhifsuZSdQc-W87gZfezoAWg8
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Oct 2014 13:34:04 -0000

Ulrich,

I'm ok with your proposed wording for step 4 in the diagram that the 
agent MAY removed the host overload report.  I just don't think it 
should be a MUST.

Regards,

Steve

On 10/1/14, 3:38 AM, Wiehe, Ulrich (NSN - DE/Munich) wrote:
> Steve,
>
> I agree that there may be cases where the agent that selects the server does not support DOIC, and consequently transparently forwards a host-type OLR to the client which then receives a host-type OLR in response to a realm-type request.
>
> The example flow in Appendix B, however, assumes that the agent supports DOIC.
>
> Please find the proposed modification attached.
>
> Ulrich
>
>
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Steve Donovan
> Sent: Tuesday, September 30, 2014 4:44 PM
> To: dime@ietf.org
> Subject: [Dime] DOIC #70 - Proposed resolution to core issue
>
> All,
>
> The core issue raised in issue #70 is whether a client can receive an
> OLR of type host when the request sent by the client was realm routed.
>
> I do not support the suggested change as there are scenarios where
> clients MUST be prepared to receive the OLR of type host when the client
> does not do server selection.  This is required for the scenario where
> agents do not support DOIC.  If the request does not contain a
> Destination-Host AVP then agents will be responsible for server
> selection.   An overloaded server will send an OLR of type host that
> will find its way back to the client.
>
> It is true that this might cause unneeded OCS entries in the client in a
> scenario where the client will never do server selection for that
> overloaded server.  This concern can be addressed by making it up to
> local policy whether or not the client saves OCS for the overload
> report.  If the client knows that it will never do server selection for
> a server indicated in a host OLR then the client can choose to not save
> the overload report.
>
> Based on this, I propose that we close issue #70 without changes to the
> DOIC specification.
>
> The discussion about the handling of a mix of overload abatement
> algorithms should continue.  We can open a separate issue if needed to
> address that functionality.
>
> Regards,
>
> Steve
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


From nobody Thu Oct  2 01:31:16 2014
Return-Path: <ulrich.wiehe@nsn.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B11F1A002D for <dime@ietfa.amsl.com>; Thu,  2 Oct 2014 01:31:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.901
X-Spam-Level: 
X-Spam-Status: No, score=-6.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XzW1CPN226x7 for <dime@ietfa.amsl.com>; Thu,  2 Oct 2014 01:31:12 -0700 (PDT)
Received: from demumfd002.nsn-inter.net (demumfd002.nsn-inter.net [93.183.12.31]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BB6891A01A5 for <dime@ietf.org>; Thu,  2 Oct 2014 01:31:11 -0700 (PDT)
Received: from demuprx017.emea.nsn-intra.net ([10.150.129.56]) by demumfd002.nsn-inter.net (8.14.3/8.14.3) with ESMTP id s928V9qt027793 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 Oct 2014 08:31:09 GMT
Received: from DEMUHTC003.nsn-intra.net ([10.159.42.34]) by demuprx017.emea.nsn-intra.net (8.12.11.20060308/8.12.11) with ESMTP id s928V6D8012562 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 2 Oct 2014 10:31:08 +0200
Received: from DEMUHTC009.nsn-intra.net (10.159.42.40) by DEMUHTC003.nsn-intra.net (10.159.42.34) with Microsoft SMTP Server (TLS) id 14.3.195.1; Thu, 2 Oct 2014 10:31:06 +0200
Received: from DEMUMBX014.nsn-intra.net ([169.254.14.218]) by DEMUHTC009.nsn-intra.net ([10.159.42.40]) with mapi id 14.03.0195.001; Thu, 2 Oct 2014 10:31:06 +0200
From: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
To: ext Steve Donovan <srdonovan@usdonovans.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] DOIC #70 - Proposed resolution to core issue
Thread-Index: AQHP3LzxVwlySCWp3U+Xg2cvYp/Vlpwa49oAgAA4IoCAAUxH0A==
Date: Thu, 2 Oct 2014 08:31:04 +0000
Message-ID: <5BCBA1FC2B7F0B4C9D935572D9000668152131BD@DEMUMBX014.nsn-intra.net>
References: <542AC192.9090600@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net> <542C0155.7050908@usdonovans.com>
In-Reply-To: <542C0155.7050908@usdonovans.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.159.42.102]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: clean
X-purgate: This mail is considered clean (visit http://www.eleven.de for further information)
X-purgate-size: 5367
X-purgate-ID: 151667::1412238669-00001FC1-02F1E399/0/0
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/PfDlgANJ3bzAMoOfaWYnworR-O8
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Oct 2014 08:31:15 -0000

Steve,

please see inline.

Ulrich

-----Original Message-----
From: ext Steve Donovan [mailto:srdonovan@usdonovans.com]=20
Sent: Wednesday, October 01, 2014 3:28 PM
To: Wiehe, Ulrich (NSN - DE/Munich); dime@ietf.org
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue

Ulrich,

Yes, but the proposed resolution for #70 is that a DOIC supporting agent=20
strip host overload reports from requests that did not have a=20
destination-host AVP.
<Ulrich> yes that was the original proposal; however during discussion
 we came up with a compromise that allows (rather than mandates) the
 agent to strip host type OLRs. </Ulrich>
  The justification for this has been that the=20
client might not send to the host and that would cause the client to=20
save extra OCS entries.
<Ulrich> still valid. </Ulrich>

The client will need to be prepared to handle overload state received in=20
this type of a request when there is not a DOIC supporting agent, so=20
there is no savings in logic to be implemented in the client by having=20
DOIC agents strip host reports.
<Ulrich> saving is not in logic to be implemented but in processing
 to be performed. This brings me to another (but related) issue: When
 receiving an answer the client (that supports DOIC without extensions)
 must be prepared to find lots of OC-OLR AVPs in the answer. The client
 needs to check every single OLR to see whether it is valid (sequence-
 number) and supported (report-type). If neither valid nor supported
 the OLR is silently discarded. An optimization for processing to be
 performed by the client would be to a) prohibit nodes to send OLRs to
 clients which the clients do not support, and b) allow clients that
 do not support any extension to check only the first OLR and silently
 discard all other received OLRs.</Ulrich>=20

In addition, the client is the best place to determine if a host report=20
is useful or not.  In the many cases the client will send subsequent=20
host reports to the server.  This will be the case in many session based=20
applications where the first request is realm-routed and subsequent=20
requests are sent to the server that handled the session initiating=20
transaction.
<Ulrich> I do not think ist a good idea to spam the client with useless
 Information </Ulrich>

I'm ok with adding wording to the specification along the lines of "the=20
client SHOULD save the OCS state for all received host overload=20
reports.  The client MAY not save the state if it knows that it will=20
never send a host-routed request to the server.   This might be the=20
case, for instance, when the client always sends realm-routed request=20
for the application."
<Ulrich> ...should save all... is ok (for all received valid and
 supported OLRs), but then ...may silently discard subsequent (i.e. all
 except the first) OLRs. Agents that add realm-type OLRs must add them
 before the non stripped host-type OLR; nodes that add extension-type
 OLRs must not add them before host-type or realm-type OLRs </Ulrich> =20

Regards,

Steve

On 10/1/14, 3:38 AM, Wiehe, Ulrich (NSN - DE/Munich) wrote:
> Steve,
>
> I agree that there may be cases where the agent that selects the server d=
oes not support DOIC, and consequently transparently forwards a host-type O=
LR to the client which then receives a host-type OLR in response to a realm=
-type request.
>
> The example flow in Appendix B, however, assumes that the agent supports =
DOIC.
>
> Please find the proposed modification attached.
>
> Ulrich
>
>
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Steve Donovan
> Sent: Tuesday, September 30, 2014 4:44 PM
> To: dime@ietf.org
> Subject: [Dime] DOIC #70 - Proposed resolution to core issue
>
> All,
>
> The core issue raised in issue #70 is whether a client can receive an
> OLR of type host when the request sent by the client was realm routed.
>
> I do not support the suggested change as there are scenarios where
> clients MUST be prepared to receive the OLR of type host when the client
> does not do server selection.  This is required for the scenario where
> agents do not support DOIC.  If the request does not contain a
> Destination-Host AVP then agents will be responsible for server
> selection.   An overloaded server will send an OLR of type host that
> will find its way back to the client.
>
> It is true that this might cause unneeded OCS entries in the client in a
> scenario where the client will never do server selection for that
> overloaded server.  This concern can be addressed by making it up to
> local policy whether or not the client saves OCS for the overload
> report.  If the client knows that it will never do server selection for
> a server indicated in a host OLR then the client can choose to not save
> the overload report.
>
> Based on this, I propose that we close issue #70 without changes to the
> DOIC specification.
>
> The discussion about the handling of a mix of overload abatement
> algorithms should continue.  We can open a separate issue if needed to
> address that functionality.
>
> Regards,
>
> Steve
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


From nobody Fri Oct  3 14:11:35 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A28531A7D80 for <dime@ietfa.amsl.com>; Fri,  3 Oct 2014 14:11:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TCTPXBVelhWj for <dime@ietfa.amsl.com>; Fri,  3 Oct 2014 14:11:32 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D136C1A8033 for <dime@ietf.org>; Fri,  3 Oct 2014 14:09:45 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s93L9g0e031326 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 3 Oct 2014 16:09:44 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D9000668152131BD@DEMUMBX014.nsn-intra.net>
Date: Fri, 3 Oct 2014 16:09:42 -0500
X-Mao-Original-Outgoing-Id: 434063382.465898-58fed1f6a1d79837c0a66986e1e164a6
Content-Transfer-Encoding: quoted-printable
Message-Id: <A52B9450-FF48-4509-9C87-7A8BC3144C2E@nostrum.com>
References: <542AC192.9090600@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net> <542C0155.7050908@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D9000668152131BD@DEMUMBX014.nsn-intra.net>
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
X-Mailer: Apple Mail (2.1878.6)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/JZCg0vX-0reMj6bfFjqwL2iXafY
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 03 Oct 2014 21:11:33 -0000

One comment inline.

On Oct 2, 2014, at 3:31 AM, Wiehe, Ulrich (NSN - DE/Munich) =
<ulrich.wiehe@nsn.com> wrote:

> Steve,
>=20
> please see inline.
>=20
> Ulrich
>=20
> -----Original Message-----
> From: ext Steve Donovan [mailto:srdonovan@usdonovans.com]=20
> Sent: Wednesday, October 01, 2014 3:28 PM
> To: Wiehe, Ulrich (NSN - DE/Munich); dime@ietf.org
> Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
>=20
> Ulrich,
>=20
> Yes, but the proposed resolution for #70 is that a DOIC supporting =
agent=20
> strip host overload reports from requests that did not have a=20
> destination-host AVP.
> <Ulrich> yes that was the original proposal; however during discussion
> we came up with a compromise that allows (rather than mandates) the
> agent to strip host type OLRs. </Ulrich>

Steve sent in a separate email that he would be okay saying that an =
agent MAY strip the host report. Do I read this comment correctly to =
mean that you agree with that? (I would also be okay with a MAY, but =
would oppose anything stronger.)




From nobody Mon Oct  6 02:33:12 2014
Return-Path: <ulrich.wiehe@nsn.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DF6371A1B25 for <dime@ietfa.amsl.com>; Mon,  6 Oct 2014 02:33:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.387
X-Spam-Level: 
X-Spam-Status: No, score=-5.387 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_RHS_DOB=1.514] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XIXwKIWoiInt for <dime@ietfa.amsl.com>; Mon,  6 Oct 2014 02:33:08 -0700 (PDT)
Received: from demumfd002.nsn-inter.net (demumfd002.nsn-inter.net [93.183.12.31]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 97DFA1A02D1 for <dime@ietf.org>; Mon,  6 Oct 2014 02:33:08 -0700 (PDT)
Received: from demuprx016.emea.nsn-intra.net ([10.150.129.55]) by demumfd002.nsn-inter.net (8.14.3/8.14.3) with ESMTP id s969X62c008924 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Oct 2014 09:33:06 GMT
Received: from DEMUHTC003.nsn-intra.net ([10.159.42.34]) by demuprx016.emea.nsn-intra.net (8.12.11.20060308/8.12.11) with ESMTP id s969X3V2000944 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 6 Oct 2014 11:33:05 +0200
Received: from DEMUMBX014.nsn-intra.net ([169.254.14.218]) by DEMUHTC003.nsn-intra.net ([10.159.42.34]) with mapi id 14.03.0195.001; Mon, 6 Oct 2014 11:33:03 +0200
From: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
To: ext Ben Campbell <ben@nostrum.com>
Thread-Topic: [Dime] DOIC #70 - Proposed resolution to core issue
Thread-Index: AQHP3LzxVwlySCWp3U+Xg2cvYp/Vlpwa49oAgAA4IoCAAUxH0IACWW8AgAQPQjA=
Date: Mon, 6 Oct 2014 09:33:03 +0000
Message-ID: <5BCBA1FC2B7F0B4C9D935572D9000668152134CF@DEMUMBX014.nsn-intra.net>
References: <542AC192.9090600@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D90006681521304D@DEMUMBX014.nsn-intra.net> <542C0155.7050908@usdonovans.com> <5BCBA1FC2B7F0B4C9D935572D9000668152131BD@DEMUMBX014.nsn-intra.net> <A52B9450-FF48-4509-9C87-7A8BC3144C2E@nostrum.com>
In-Reply-To: <A52B9450-FF48-4509-9C87-7A8BC3144C2E@nostrum.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.159.42.157]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: clean
X-purgate: This mail is considered clean (visit http://www.eleven.de for further information)
X-purgate-size: 2074
X-purgate-ID: 151667::1412587986-00001FC1-8EAAF96A/0/0
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/geh2nswE82PEFgOAs48ViokUJNY
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 06 Oct 2014 09:33:11 -0000

Ben,

yes, the agent that takes the role of the reporting node for realm reports =
MAY strip host reports. This is independent from whether or not the realm i=
s actually overloaded (i.e. whether or not a realm report is actually sent)=
.

Actually I am more concerned with complexity at the client side.

Ideally I would like to see a solution where the client (which does not sup=
port any extension) is not required to do more than just processing the fir=
st OLR within an answer, and may safely ignore additional OLRs. This would =
mean that the agent that takes the option not to strip the host report must=
 insert its realm report (if any) before the host report.
I hope that is acceptable.

Ulrich

-----Original Message-----
From: ext Ben Campbell [mailto:ben@nostrum.com]=20
Sent: Friday, October 03, 2014 11:10 PM
To: Wiehe, Ulrich (NSN - DE/Munich)
Cc: ext Steve Donovan; dime@ietf.org
Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue

One comment inline.

On Oct 2, 2014, at 3:31 AM, Wiehe, Ulrich (NSN - DE/Munich) <ulrich.wiehe@n=
sn.com> wrote:

> Steve,
>=20
> please see inline.
>=20
> Ulrich
>=20
> -----Original Message-----
> From: ext Steve Donovan [mailto:srdonovan@usdonovans.com]=20
> Sent: Wednesday, October 01, 2014 3:28 PM
> To: Wiehe, Ulrich (NSN - DE/Munich); dime@ietf.org
> Subject: Re: [Dime] DOIC #70 - Proposed resolution to core issue
>=20
> Ulrich,
>=20
> Yes, but the proposed resolution for #70 is that a DOIC supporting agent=
=20
> strip host overload reports from requests that did not have a=20
> destination-host AVP.
> <Ulrich> yes that was the original proposal; however during discussion
> we came up with a compromise that allows (rather than mandates) the
> agent to strip host type OLRs. </Ulrich>

Steve sent in a separate email that he would be okay saying that an agent M=
AY strip the host report. Do I read this comment correctly to mean that you=
 agree with that? (I would also be okay with a MAY, but would oppose anythi=
ng stronger.)




From nobody Mon Oct  6 17:39:29 2014
Return-Path: <susan.shishufeng@huawei.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9F13D1A90E0 for <dime@ietfa.amsl.com>; Mon,  6 Oct 2014 17:39:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.473
X-Spam-Level: 
X-Spam-Status: No, score=-3.473 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.786, SPF_PASS=-0.001, URIBL_RHS_DOB=1.514] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VfKnwbj7YP79 for <dime@ietfa.amsl.com>; Mon,  6 Oct 2014 17:39:24 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AEE621A88B4 for <dime@ietf.org>; Mon,  6 Oct 2014 17:39:22 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml405-hub.china.huawei.com) ([172.18.7.190]) by lhrrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BNJ29443; Tue, 07 Oct 2014 00:39:21 +0000 (GMT)
Received: from SZXEMA402-HUB.china.huawei.com (10.82.72.34) by lhreml405-hub.china.huawei.com (10.201.5.242) with Microsoft SMTP Server (TLS) id 14.3.158.1; Tue, 7 Oct 2014 01:39:20 +0100
Received: from SZXEMA512-MBX.china.huawei.com ([169.254.7.45]) by SZXEMA402-HUB.china.huawei.com ([10.82.72.34]) with mapi id 14.03.0158.001; Tue, 7 Oct 2014 08:39:11 +0800
From: "Shishufeng (Susan)" <susan.shishufeng@huawei.com>
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>, "ext Maria Cruz Bartolome" <maria.cruz.bartolome@ericsson.com>, "TROTTIN, JEAN-JACQUES (JEAN-JACQUES)" <jean-jacques.trottin@alcatel-lucent.com>, "dime@ietf.org" <dime@ietf.org>, "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>
Thread-Topic: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, with absent Destination-Host
Thread-Index: AQHP2XX4KWj6QHHCr0yqOWS1GJJJ85wj2Pgf
Date: Tue, 7 Oct 2014 00:39:11 +0000
Message-ID: <26C84DFD55BC3040A45BF70926E55F258DF7CE8F@SZXEMA512-MBX.china.huawei.com>
References: <075.41a258960641a985e7e7d8a618123b41@trac.tools.ietf.org> <5409C5A4.5090203@usdonovans.com> <E194C2E18676714DACA9C3A2516265D2026C30A4@FR712WXCHMBA12.zeu.alcatel-lucent.com> <087A34937E64E74E848732CFF8354B920983BD00@ESESSMB101.ericsson.se> <E194C2E18676714DACA9C3A2516265D2026CCAD1@FR712WXCHMBA11.zeu.alcatel-lucent.com> <087A34937E64E74E848732CFF8354B920983BF65@ESESSMB101.ericsson.se>, <5BCBA1FC2B7F0B4C9D935572D90006681520B965@DEMUMBX014.nsn-intra.net>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D90006681520B965@DEMUMBX014.nsn-intra.net>
Accept-Language: en-GB, zh-CN, en-US
Content-Language: en-GB
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.46.156.197]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/TlAFet9RjiPfAvJZt4Z9oKPwKGk
Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, with absent Destination-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 07 Oct 2014 00:39:26 -0000

Dear all,

I support Ulrich's interpretation, i.e. a realm report may be used only in =
the case the "server" which will finally serve the request is not available=
 to the client which sends the request.=20

Best Regards,
Susan
________________________________________
From: Wiehe, Ulrich (NSN - DE/Munich) [ulrich.wiehe@nsn.com]
Sent: 26 September 2014 18:37
To: ext Maria Cruz Bartolome; TROTTIN, JEAN-JACQUES (JEAN-JACQUES); dime@ie=
tf.org; draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm,=
 with absent Destination-Host

Mcruz, JJ,

Maybe I missed your point, but my understanding is a bit different.
Please see the attached proposal.

Best regards
Ulrich

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Maria Cruz Barto=
lome
Sent: Friday, September 26, 2014 11:58 AM
To: TROTTIN, JEAN-JACQUES (JEAN-JACQUES); dime@ietf.org; draft-ietf-dime-ov=
li@tools.ietf.org
Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm,=
 with absent Destination-Host

Dear JJ, all

I think I understand your concern.
I modified text in clause 6.6 to clarify this point. Attached.
Let me know your opinions.
Best regards
/MCruz


-----Original Message-----
From: TROTTIN, JEAN-JACQUES (JEAN-JACQUES) [mailto:jean-jacques.trottin@alc=
atel-lucent.com]
Sent: viernes, 26 de septiembre de 2014 10:12
To: Maria Cruz Bartolome; dime@ietf.org; draft-ietf-dime-ovli@tools.ietf.or=
g
Subject: RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm,=
 with absent Destination-Host


Hi Maria Cruz

1) The hereafter proposed text  is in a sub part of section 6.6 addressing =
 the overload treatment when the  OC-report type indicates realm report so =
according to a Realm type OLR. The proposed  text mentions "...Origin-Host =
AVP of the received message that contained the OC-OLR AVP". This  OC-OLR AV=
P can be understood  as the Realm type OLR subject of this section 6.6 subp=
art (this was my first reading), but it is another report which is a host t=
ype OLR generated by this peer.
As you said we have to distinguish when either a host or a realm report to =
be applied, so here the proposal is to exclude from the text the case where=
 the reacting node has an active type Host type OLR of which the Origin Hos=
t match the peer identity, as for this case the host type OLR will be appli=
ed. On this basis I would propose write "Host type OC-OLR AVP" as hereafter=
.

"The Destination-Host AVP is absent in the request and the value of peer id=
entity associated with the connection used to send the request does not mat=
ch the value of the Origin-Host AVP of a received message that contained a =
Host type OC-OLR AVP"

2) When thinking a bit more to this case where the reacting node is directl=
y connected to the reporting node (eg a Client directly connected to two or=
 more servers, without intermediate DA, or a DA acting as a reacting node d=
irectly connected to servers). The servers usually only send Host type repo=
rts (I know there  is a  debate on servers sending realm reports), so the r=
eacting node will not receive Realm reports.  For requests for which there =
is no destination Host, the reacting node will select the peer according to=
 the host OLRs  it has or not for each of the peers (eg a peer that is not =
overload or with a small overload )  and then apply the abatement/throttlin=
g according to the Host type OLR of this peer. I think we have the same und=
erstanding.


Best regards

JJacques

-----Message d'origine-----
De : Maria Cruz Bartolome [mailto:maria.cruz.bartolome@ericsson.com]
Envoy=E9 : jeudi 25 septembre 2014 18:28
=C0 : TROTTIN, JEAN-JACQUES (JEAN-JACQUES); dime@ietf.org; draft-ietf-dime-=
ovli@tools.ietf.org
Objet : RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, =
with absent Destination-Host

Dear JJ,

I do not understand your point.

Proposed clarification has the purpose to allow a reacting node to distingu=
ish when either a host or a realm report shall apply.

Some time ago we based such a distinction on the presence (meaning host rep=
ort) or absence (meaning realm report).
Now we have covered the case for host reports when the host is absent but i=
t refers to the directly connected peer. Therefore, just absence does not a=
llow the reacting node to identify it has to apply a realm report.

Let me know if this clarifies, or if I may be missing your point.
Thanks
/MCruz


-----Original Message-----
From: TROTTIN, JEAN-JACQUES (JEAN-JACQUES) [mailto:jean-jacques.trottin@alc=
atel-lucent.com]
Sent: viernes, 12 de septiembre de 2014 14:13
To: dime@ietf.org; draft-ietf-dime-ovli@tools.ietf.org; Maria Cruz Bartolom=
e
Subject: RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm,=
 with absent Destination-Host

Hi MCruz

The proposed  text applies to the realm report.

Realm OLRs (in particular with same seq number) may be conveyed in answers =
with different Origin-host (but with same Origin realm), so what means to r=
efer "to the Origin-Host AVP of the received message that contained the (re=
alm type) OC-OLR AVP". This is different  from the Host report, where the h=
ost type OC-OLR always refers to the origin host  of the answer.

Can you  clarify and give a use case / topology case.

Best regards

JJacques


-----Message d'origine-----
De : DiME [mailto:dime-bounces@ietf.org] De la part de Steve Donovan Envoy=
=E9 : vendredi 5 septembre 2014 16:16 =C0 : dime@ietf.org; draft-ietf-dime-=
ovli@tools.ietf.org; maria.cruz.bartolome@ericsson.com Objet : Re: [Dime] [=
dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, with absent Destinat=
ion-Host

I agree.

On 9/5/14, 2:40 AM, dime issue tracker wrote:
> #69: Report Type - Realm, with absent Destination-Host
>
>   In clause 6.6, host report was updated to add:
>
>   ... or the Destination-Host is
>         not present in the request but the value of peer identity
>         associated with the connection used to send the request matches
>         the value of the Origin-Host AVP of the received message that
>         contained the OC-OLR AVP.
>
>   but this clarification needs to be included as well for realm report.
>
>   Original text:
>
>      1  A realm report.  The overload treatment should apply to requests
>         for which all of the following conditions are true:
>
>         The Destination-Host AVP is absent in the request.
>
>         ...
>
>   Proposed text:
>
>      1  A realm report.  The overload treatment should apply to requests
>         for which all of the following conditions are true:
>
>         The Destination-Host AVP is absent in the request and the the val=
ue
>   of peer identity associated with the connection used to send the reques=
t
>   does not match the value of the Origin-Host AVP of the received message
>   that contained the OC-OLR AVP.
>

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime=


From nobody Thu Oct  9 05:03:12 2014
Return-Path: <jouni.nospam@gmail.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C0DB51ACDF7 for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 05:03:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level: 
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9,  DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5DHkFwmqABUI for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 05:03:07 -0700 (PDT)
Received: from mail-lb0-x22d.google.com (mail-lb0-x22d.google.com [IPv6:2a00:1450:4010:c04::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7DDF61ACDEF for <dime@ietf.org>; Thu,  9 Oct 2014 05:03:07 -0700 (PDT)
Received: by mail-lb0-f173.google.com with SMTP id 10so979029lbg.18 for <dime@ietf.org>; Thu, 09 Oct 2014 05:03:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;  h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=zhY9Ro1RSao/N3tq+ndIBhFUg196O7p1xEIZ0BIv2+8=; b=NMlhOw/gZ9JWo4DRxhWgrbpaZgBrn/QxUGi/ReLmKcqjS4roP2CgURg03y02DnfIlQ gaw/2D3kBa9AfkZLNBcdMvHllwLX337TiqwgcU9Yy0YJXRVnAT+xSZfPNOMRrH4eKuWQ Iu3KykohJ46nvbhkCym7GEKwtm2HdTlhINIGH44uFShtKEyv7HEwpVU5DqcbVOo4nLSc ct3T1da250TcozdJwsOKqZ7aFk1pPR/DTFecBtwrdesO0GRRtyYEX6IxDYUhyuhrRJuu RBHSoAo5IIox5+fsRPWHkPqawFrBXcqaHwgLRKP/3eGbIWGqBshhR7YyhT/GUWGaJ8Gl vljg==
X-Received: by 10.112.190.69 with SMTP id go5mr17574918lbc.32.1412856183539; Thu, 09 Oct 2014 05:03:03 -0700 (PDT)
Received: from [188.117.15.108] ([188.117.15.108]) by mx.google.com with ESMTPSA id pm3sm915081lbb.15.2014.10.09.05.03.02 for <dime@ietf.org> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 09 Oct 2014 05:03:02 -0700 (PDT)
Message-ID: <5436797C.7020606@gmail.com>
Date: Thu, 09 Oct 2014 15:03:08 +0300
From: Jouni Korhonen <jouni.nospam@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/nKikgFY6zmRuyqt8VA5_56QdyXs
Subject: [Dime] Honolulu agenda building..
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Oct 2014 12:03:10 -0000

Folks,

IETF 91 is getting close.. we have again asked for 2.5h slot. We have 
the obvious agenda topics like WG update and DOIC. If you wish to 
present something or even propose new work, please send the chairs a 
request.

- Jouni & Lionel



From nobody Thu Oct  9 08:18:11 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A907C1A6EE1 for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 08:18:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dZvgRz0AdDoa for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 08:18:06 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 69C911A1AFE for <dime@ietf.org>; Thu,  9 Oct 2014 08:18:06 -0700 (PDT)
Received: from localhost ([::1]:47313 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XcFTd-0002J9-2y; Thu, 09 Oct 2014 08:18:01 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Thu, 09 Oct 2014 15:18:00 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/74
Message-ID: <066.528fadde671b27f69242e310aaface81@trac.tools.ietf.org>
X-Trac-Ticket-ID: 74
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/3za-llWzfcEMwLjVOYu-0HtQukY
Cc: dime@ietf.org
Subject: [Dime] [dime] #74 (draft-ietf-dime-ovli): Move section 3.7. Considerations for Applications Integrating the DOIC Solution to Appendix
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Oct 2014 15:18:09 -0000

#74: Move section 3.7. Considerations for Applications Integrating the DOIC
Solution to Appendix

 Proposal to move this section to an Appendix.  It provides good
 information but having it as part of section 3 decreases the readability
 of the document.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  enhancement              |     Status:  new
 Priority:  minor                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/74>
dime <http://tools.ietf.org/wg/dime/>


From nobody Thu Oct  9 08:48:44 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B684E1ACFE7 for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 08:27:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 3.88
X-Spam-Level: ***
X-Spam-Status: No, score=3.88 tagged_above=-999 required=5 tests=[BAYES_50=0.8, MANGLED_LIST=2.3, SPF_NEUTRAL=0.779, WEIRD_PORT=0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HO0ieD_446Ox for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 08:27:03 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E52781ACFAD for <dime@ietf.org>; Thu,  9 Oct 2014 08:27:02 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:62224 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XcFcJ-0002PO-QP for dime@ietf.org; Thu, 09 Oct 2014 08:27:01 -0700
Message-ID: <5436A942.1010400@usdonovans.com>
Date: Thu, 09 Oct 2014 10:26:58 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------060503040209050300020606"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Yo6QgpI4ER-zQREOrcfChMWlOcc
X-Mailman-Approved-At: Thu, 09 Oct 2014 08:48:40 -0700
Subject: [Dime] Prep for next weeks DIME interim meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Oct 2014 15:27:34 -0000

This is a multi-part message in MIME format.
--------------060503040209050300020606
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

All,

As we prepare for next weeks interim meeting, please remember to use the 
following as the source document:

https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt

I've attached a copy for everyone's convenience.

Regards,

Steve

--------------060503040209050300020606
Content-Type: text/plain; charset=UTF-8;
 name="draft-ietf-dime-ovli-04.txt"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment;
 filename="draft-ietf-dime-ovli-04.txt"





<!DOCTYPE html>
<html lang="en" class="">
  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="Content-Language" content="en">
    
    
    <title>draft-docdt-dime-ovli/draft-ietf-dime-ovli-04.txt at master Â· jounikor/draft-docdt-dime-ovli Â· GitHub</title>
    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
    <meta property="fb:app_id" content="1401488693436528">

      <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="jounikor/draft-docdt-dime-ovli" name="twitter:title" /><meta content="Contribute to draft-docdt-dime-ovli development by creating an account on GitHub." name="twitter:description" /><meta content="https://avatars1.githubusercontent.com/u/4416951?v=2&amp;s=400" name="twitter:image:src" />
<meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars1.githubusercontent.com/u/4416951?v=2&amp;s=400" property="og:image" /><meta content="jounikor/draft-docdt-dime-ovli" property="og:title" /><meta content="https://github.com/jounikor/draft-docdt-dime-ovli" property="og:url" /><meta content="Contribute to draft-docdt-dime-ovli development by creating an account on GitHub." property="og:description" />

      <meta name="browser-stats-url" content="/_stats">
    <link rel="assets" href="https://assets-cdn.github.com/">
    <link rel="conduit-xhr" href="https://ghconduit.com:25035">
    
    <meta name="pjax-timeout" content="1000">

    <meta name="msapplication-TileImage" content="/windows-tile.png">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="selected-link" value="repo_source" data-pjax-transient>
      <meta name="google-analytics" content="UA-3769691-2">

    <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="4CBB645E:2C52:9D4F7:5436A81E" name="octolytics-dimension-request_id" />
    <meta content="Rails, view, blob#show" name="analytics-event" />

    
    
    <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">


    <meta content="authenticity_token" name="csrf-param" />
<meta content="toqoJtIFiXndYHgpI+V+fdGpBcAS1zEIjKdMPX913Os93ho5m8QqzvxAR1L/rROPZu8wU37uM3CpiLHvOuDHPw==" name="csrf-token" />

    <link href="https://assets-cdn.github.com/assets/github-210c47b11ca55ecac4b73b72db773ec0e6a9dd36.css" media="all" rel="stylesheet" type="text/css" />
    <link href="https://assets-cdn.github.com/assets/github2-f290503caf03b8b07bb961e543857600c3a3d590.css" media="all" rel="stylesheet" type="text/css" />
    


    <meta http-equiv="x-pjax-version" content="12e895be069aa9ef778093906c1d9691">

      
  <meta name="description" content="Contribute to draft-docdt-dime-ovli development by creating an account on GitHub.">
  <meta name="go-import" content="github.com/jounikor/draft-docdt-dime-ovli git https://github.com/jounikor/draft-docdt-dime-ovli.git">

  <meta content="4416951" name="octolytics-dimension-user_id" /><meta content="jounikor" name="octolytics-dimension-user_login" /><meta content="12294300" name="octolytics-dimension-repository_id" /><meta content="jounikor/draft-docdt-dime-ovli" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="12294300" name="octolytics-dimension-repository_network_root_id" /><meta content="jounikor/draft-docdt-dime-ovli" name="octolytics-dimension-repository_network_root_nwo" />
  <link href="https://github.com/jounikor/draft-docdt-dime-ovli/commits/master.atom" rel="alternate" title="Recent Commits to draft-docdt-dime-ovli:master" type="application/atom+xml">

  </head>


  <body class="logged_out  env-production macintosh vis-public page-blob">
    <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
    <div class="wrapper">
      
      
      
      


      
      <div class="header header-logged-out" role="banner">
  <div class="container clearfix">

    <a class="header-logo-wordmark" href="https://github.com/" ga-data-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
      <span class="mega-octicon octicon-logo-github"></span>
    </a>

    <div class="header-actions" role="navigation">
        <a class="button primary" href="/join" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
      <a class="button signin" href="/login?return_to=%2Fjounikor%2Fdraft-docdt-dime-ovli%2Fblob%2Fmaster%2Fdraft-ietf-dime-ovli-04.txt" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
    </div>

    <div class="site-search repo-scope js-site-search" role="search">
      <form accept-charset="UTF-8" action="/jounikor/draft-docdt-dime-ovli/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/jounikor/draft-docdt-dime-ovli/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
  <input type="text"
    class="js-site-search-field is-clearable"
    data-hotkey="s"
    name="q"
    placeholder="Search"
    data-global-scope-placeholder="Search GitHub"
    data-repo-scope-placeholder="Search"
    tabindex="1"
    autocapitalize="off">
  <div class="scope-badge">This repository</div>
</form>
    </div>

      <ul class="header-nav left" role="navigation">
          <li class="header-nav-item">
            <a class="header-nav-link" href="/explore" data-ga-click="(Logged out) Header, go to explore, text:explore">Explore</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="/features" data-ga-click="(Logged out) Header, go to features, text:features">Features</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="https://enterprise.github.com/" data-ga-click="(Logged out) Header, go to enterprise, text:enterprise">Enterprise</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="/blog" data-ga-click="(Logged out) Header, go to blog, text:blog">Blog</a>
          </li>
      </ul>

  </div>
</div>



      <div id="start-of-content" class="accessibility-aid"></div>
          <div class="site" itemscope itemtype="http://schema.org/WebPage">
    <div id="js-flash-container">
      
    </div>
    <div class="pagehead repohead instapaper_ignore readability-menu">
      <div class="container">
        
<ul class="pagehead-actions">


  <li>
      <a href="/login?return_to=%2Fjounikor%2Fdraft-docdt-dime-ovli"
    class="minibutton with-count star-button tooltipped tooltipped-n"
    aria-label="You must be signed in to star a repository" rel="nofollow">
    <span class="octicon octicon-star"></span>
    Star
  </a>

    <a class="social-count js-social-count" href="/jounikor/draft-docdt-dime-ovli/stargazers">
      0
    </a>

  </li>

    <li>
      <a href="/login?return_to=%2Fjounikor%2Fdraft-docdt-dime-ovli"
        class="minibutton with-count js-toggler-target fork-button tooltipped tooltipped-n"
        aria-label="You must be signed in to fork a repository" rel="nofollow">
        <span class="octicon octicon-repo-forked"></span>
        Fork
      </a>
      <a href="/jounikor/draft-docdt-dime-ovli/network" class="social-count">
        2
      </a>
    </li>
</ul>

        <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
          <span class="mega-octicon octicon-repo"></span>
          <span class="author"><a href="/jounikor" class="url fn" itemprop="url" rel="author"><span itemprop="title">jounikor</span></a></span><!--
       --><span class="path-divider">/</span><!--
       --><strong><a href="/jounikor/draft-docdt-dime-ovli" class="js-current-repository js-repo-home-link">draft-docdt-dime-ovli</a></strong>

          <span class="page-context-loader">
            <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
          </span>

        </h1>
      </div><!-- /.container -->
    </div><!-- /.repohead -->

    <div class="container">
      <div class="repository-with-sidebar repo-container new-discussion-timeline  ">
        <div class="repository-sidebar clearfix">
            
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders" role="navigation" data-issue-count-url="/jounikor/draft-docdt-dime-ovli/issues/counts">
  <div class="sunken-menu-contents">
    <ul class="sunken-menu-group">
      <li class="tooltipped tooltipped-w" aria-label="Code">
        <a href="/jounikor/draft-docdt-dime-ovli" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /jounikor/draft-docdt-dime-ovli">
          <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
</a>      </li>

        <li class="tooltipped tooltipped-w" aria-label="Issues">
          <a href="/jounikor/draft-docdt-dime-ovli/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /jounikor/draft-docdt-dime-ovli/issues">
            <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
            <span class="js-issue-replace-counter"></span>
            <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
</a>        </li>

      <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
        <a href="/jounikor/draft-docdt-dime-ovli/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g p" data-selected-links="repo_pulls /jounikor/draft-docdt-dime-ovli/pulls">
            <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
            <span class="js-pull-replace-counter"></span>
            <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
</a>      </li>


    </ul>
    <div class="sunken-menu-separator"></div>
    <ul class="sunken-menu-group">

      <li class="tooltipped tooltipped-w" aria-label="Pulse">
        <a href="/jounikor/draft-docdt-dime-ovli/pulse/weekly" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /jounikor/draft-docdt-dime-ovli/pulse/weekly">
          <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
</a>      </li>

      <li class="tooltipped tooltipped-w" aria-label="Graphs">
        <a href="/jounikor/draft-docdt-dime-ovli/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /jounikor/draft-docdt-dime-ovli/graphs">
          <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
</a>      </li>
    </ul>


  </div>
</div>

              <div class="only-with-full-nav">
                
  
<div class="clone-url open"
  data-protocol-type="http"
  data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
  <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
  <div class="input-group">
    <input type="text" class="input-mini input-monospace js-url-field"
           value="https://github.com/jounikor/draft-docdt-dime-ovli.git" readonly="readonly">
    <span class="input-group-button">
      <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/jounikor/draft-docdt-dime-ovli.git" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
    </span>
  </div>
</div>

  
<div class="clone-url "
  data-protocol-type="subversion"
  data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
  <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
  <div class="input-group">
    <input type="text" class="input-mini input-monospace js-url-field"
           value="https://github.com/jounikor/draft-docdt-dime-ovli" readonly="readonly">
    <span class="input-group-button">
      <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/jounikor/draft-docdt-dime-ovli" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
    </span>
  </div>
</div>


<p class="clone-options">You can clone with
      <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>
      or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
  <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
    <span class="octicon octicon-question"></span>
  </a>
</p>

  <a href="http://mac.github.com" data-url="github-mac://openRepo/https://github.com/jounikor/draft-docdt-dime-ovli" class="minibutton sidebar-button js-conduit-rewrite-url" title="Save jounikor/draft-docdt-dime-ovli to your computer and use it in GitHub Desktop." aria-label="Save jounikor/draft-docdt-dime-ovli to your computer and use it in GitHub Desktop.">
    <span class="octicon octicon-device-desktop"></span>
    Clone in Desktop
  </a>


                <a href="/jounikor/draft-docdt-dime-ovli/archive/master.zip"
                   class="minibutton sidebar-button"
                   aria-label="Download the contents of jounikor/draft-docdt-dime-ovli as a zip file"
                   title="Download the contents of jounikor/draft-docdt-dime-ovli as a zip file"
                   rel="nofollow">
                  <span class="octicon octicon-cloud-download"></span>
                  Download ZIP
                </a>
              </div>
        </div><!-- /.repository-sidebar -->

        <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
          

<a href="/jounikor/draft-docdt-dime-ovli/blob/996c91455089e75bcc556b7a8e29b44c4c858a44/draft-ietf-dime-ovli-04.txt" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>

<!-- blob contrib key: blob_contributors:v21:5e5dce71791b5a6618a49084d56fe63b -->

<div class="file-navigation">
  
<div class="select-menu js-menu-container js-select-menu left">
  <span class="minibutton select-menu-button js-menu-target css-truncate" data-hotkey="w"
    data-master-branch="master"
    data-ref="master"
    title="master"
    role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
    <span class="octicon octicon-git-branch"></span>
    <i>branch:</i>
    <span class="js-select-button css-truncate-target">master</span>
  </span>

  <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">

    <div class="select-menu-modal">
      <div class="select-menu-header">
        <span class="select-menu-title">Switch branches/tags</span>
        <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
      </div> <!-- /.select-menu-header -->

      <div class="select-menu-filters">
        <div class="select-menu-text-filter">
          <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
        </div>
        <div class="select-menu-tabs">
          <ul>
            <li class="select-menu-tab">
              <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
            </li>
            <li class="select-menu-tab">
              <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
            </li>
          </ul>
        </div><!-- /.select-menu-tabs -->
      </div><!-- /.select-menu-filters -->

      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">

        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">


            <div class="select-menu-item js-navigation-item selected">
              <span class="select-menu-item-icon octicon octicon-check"></span>
              <a href="/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt"
                 data-name="master"
                 data-skip-pjax="true"
                 rel="nofollow"
                 class="js-navigation-open select-menu-item-text css-truncate-target"
                 title="master">master</a>
            </div> <!-- /.select-menu-item -->
        </div>

          <div class="select-menu-no-results">Nothing to show</div>
      </div> <!-- /.select-menu-list -->

      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">


        </div>

        <div class="select-menu-no-results">Nothing to show</div>
      </div> <!-- /.select-menu-list -->

    </div> <!-- /.select-menu-modal -->
  </div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->

  <div class="button-group right">
    <a href="/jounikor/draft-docdt-dime-ovli/find/master"
          class="js-show-file-finder minibutton empty-icon tooltipped tooltipped-s"
          data-pjax
          data-hotkey="t"
          aria-label="Quickly jump between files">
      <span class="octicon octicon-list-unordered"></span>
    </a>
    <button class="js-zeroclipboard minibutton zeroclipboard-button"
          data-clipboard-text="draft-ietf-dime-ovli-04.txt"
          aria-label="Copy to clipboard"
          data-copied-hint="Copied!">
      <span class="octicon octicon-clippy"></span>
    </button>
  </div>

  <div class="breadcrumb">
    <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/jounikor/draft-docdt-dime-ovli" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">draft-docdt-dime-ovli</span></a></span></span><span class="separator"> / </span><strong class="final-path">draft-ietf-dime-ovli-04.txt</strong>
  </div>
</div>


  <div class="commit commit-loader file-history-tease js-deferred-content" data-url="/jounikor/draft-docdt-dime-ovli/contributors/master/draft-ietf-dime-ovli-04.txt">
    <div class="file-history-tease-header">
      Fetching contributors&hellip;
    </div>

    <div class="participation">
      <p class="loader-loading"><img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" /></p>
      <p class="loader-error">Cannot retrieve contributors at this time</p>
    </div>
  </div>

<div class="file-box">
  <div class="file">
    <div class="meta clearfix">
      <div class="info file-name">
          <span>2465 lines (1744 sloc)</span>
          <span class="meta-divider"></span>
        <span>106.4 kb</span>
      </div>
      <div class="actions">
        <div class="button-group">
          <a href="/jounikor/draft-docdt-dime-ovli/raw/master/draft-ietf-dime-ovli-04.txt" class="minibutton " id="raw-url">Raw</a>
            <a href="/jounikor/draft-docdt-dime-ovli/blame/master/draft-ietf-dime-ovli-04.txt" class="minibutton js-update-url-with-hash">Blame</a>
          <a href="/jounikor/draft-docdt-dime-ovli/commits/master/draft-ietf-dime-ovli-04.txt" class="minibutton " rel="nofollow">History</a>
        </div><!-- /.button-group -->

          <a class="octicon-button tooltipped tooltipped-nw js-conduit-openfile-check"
             href="http://mac.github.com"
             data-url="github-mac://openRepo/https://github.com/jounikor/draft-docdt-dime-ovli?branch=master&amp;filepath=draft-ietf-dime-ovli-04.txt"
             aria-label="Open this file in GitHub for Mac"
             data-failed-title="Your version of GitHub for Mac is too old to open this file. Try checking for updates.">
              <span class="octicon octicon-device-desktop"></span>
          </a>

            <a class="octicon-button disabled tooltipped tooltipped-w" href="#"
               aria-label="You must be signed in to make or propose changes"><span class="octicon octicon-pencil"></span></a>

          <a class="octicon-button danger disabled tooltipped tooltipped-w" href="#"
             aria-label="You must be signed in to make or propose changes">
          <span class="octicon octicon-trashcan"></span>
        </a>
      </div><!-- /.actions -->
    </div>
    
  <div class="blob-wrapper data type-text">
      <table class="highlight tab-size-8 js-file-line-container">
      <tr>
        <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
        <td id="LC1" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
        <td id="LC2" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
        <td id="LC3" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
        <td id="LC4" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
        <td id="LC5" class="blob-code js-file-line">Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.</td>
      </tr>
      <tr>
        <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
        <td id="LC6" class="blob-code js-file-line">Internet-Draft                                                  Broadcom</td>
      </tr>
      <tr>
        <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
        <td id="LC7" class="blob-code js-file-line">Intended status: Standards Track                         S. Donovan, Ed.</td>
      </tr>
      <tr>
        <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
        <td id="LC8" class="blob-code js-file-line">Expires: March 9, 2015                                       B. Campbell</td>
      </tr>
      <tr>
        <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
        <td id="LC9" class="blob-code js-file-line">                                                                  Oracle</td>
      </tr>
      <tr>
        <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
        <td id="LC10" class="blob-code js-file-line">                                                               L. Morand</td>
      </tr>
      <tr>
        <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
        <td id="LC11" class="blob-code js-file-line">                                                             Orange Labs</td>
      </tr>
      <tr>
        <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
        <td id="LC12" class="blob-code js-file-line">                                                       September 5, 2014</td>
      </tr>
      <tr>
        <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
        <td id="LC13" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
        <td id="LC14" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
        <td id="LC15" class="blob-code js-file-line">                Diameter Overload Indication Conveyance</td>
      </tr>
      <tr>
        <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
        <td id="LC16" class="blob-code js-file-line">                      draft-ietf-dime-ovli-04.txt</td>
      </tr>
      <tr>
        <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
        <td id="LC17" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
        <td id="LC18" class="blob-code js-file-line">Abstract</td>
      </tr>
      <tr>
        <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
        <td id="LC19" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
        <td id="LC20" class="blob-code js-file-line">   This specification documents a Diameter Overload Control (DOC) base</td>
      </tr>
      <tr>
        <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
        <td id="LC21" class="blob-code js-file-line">   solution and the dissemination of the overload report information.</td>
      </tr>
      <tr>
        <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
        <td id="LC22" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
        <td id="LC23" class="blob-code js-file-line">Requirements</td>
      </tr>
      <tr>
        <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
        <td id="LC24" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
        <td id="LC25" class="blob-code js-file-line">   The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,</td>
      </tr>
      <tr>
        <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
        <td id="LC26" class="blob-code js-file-line">   &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this</td>
      </tr>
      <tr>
        <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
        <td id="LC27" class="blob-code js-file-line">   document are to be interpreted as described in RFC 2119 [RFC2119].</td>
      </tr>
      <tr>
        <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
        <td id="LC28" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
        <td id="LC29" class="blob-code js-file-line">Status of This Memo</td>
      </tr>
      <tr>
        <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
        <td id="LC30" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
        <td id="LC31" class="blob-code js-file-line">   This Internet-Draft is submitted in full conformance with the</td>
      </tr>
      <tr>
        <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
        <td id="LC32" class="blob-code js-file-line">   provisions of BCP 78 and BCP 79.</td>
      </tr>
      <tr>
        <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
        <td id="LC33" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
        <td id="LC34" class="blob-code js-file-line">   Internet-Drafts are working documents of the Internet Engineering</td>
      </tr>
      <tr>
        <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
        <td id="LC35" class="blob-code js-file-line">   Task Force (IETF).  Note that other groups may also distribute</td>
      </tr>
      <tr>
        <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
        <td id="LC36" class="blob-code js-file-line">   working documents as Internet-Drafts.  The list of current Internet-</td>
      </tr>
      <tr>
        <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
        <td id="LC37" class="blob-code js-file-line">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td>
      </tr>
      <tr>
        <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
        <td id="LC38" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
        <td id="LC39" class="blob-code js-file-line">   Internet-Drafts are draft documents valid for a maximum of six months</td>
      </tr>
      <tr>
        <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
        <td id="LC40" class="blob-code js-file-line">   and may be updated, replaced, or obsoleted by other documents at any</td>
      </tr>
      <tr>
        <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
        <td id="LC41" class="blob-code js-file-line">   time.  It is inappropriate to use Internet-Drafts as reference</td>
      </tr>
      <tr>
        <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
        <td id="LC42" class="blob-code js-file-line">   material or to cite them other than as &quot;work in progress.&quot;</td>
      </tr>
      <tr>
        <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
        <td id="LC43" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
        <td id="LC44" class="blob-code js-file-line">   This Internet-Draft will expire on March 9, 2015.</td>
      </tr>
      <tr>
        <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
        <td id="LC45" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
        <td id="LC46" class="blob-code js-file-line">Copyright Notice</td>
      </tr>
      <tr>
        <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
        <td id="LC47" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
        <td id="LC48" class="blob-code js-file-line">   Copyright (c) 2014 IETF Trust and the persons identified as the</td>
      </tr>
      <tr>
        <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
        <td id="LC49" class="blob-code js-file-line">   document authors.  All rights reserved.</td>
      </tr>
      <tr>
        <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
        <td id="LC50" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
        <td id="LC51" class="blob-code js-file-line">   This document is subject to BCP 78 and the IETF Trust&#39;s Legal</td>
      </tr>
      <tr>
        <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
        <td id="LC52" class="blob-code js-file-line">   Provisions Relating to IETF Documents</td>
      </tr>
      <tr>
        <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
        <td id="LC53" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
        <td id="LC54" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
        <td id="LC55" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
        <td id="LC56" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 1]</td>
      </tr>
      <tr>
        <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
        <td id="LC57" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
        <td id="LC58" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
        <td id="LC59" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
        <td id="LC60" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
        <td id="LC61" class="blob-code js-file-line">   (http://trustee.ietf.org/license-info) in effect on the date of</td>
      </tr>
      <tr>
        <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
        <td id="LC62" class="blob-code js-file-line">   publication of this document.  Please review these documents</td>
      </tr>
      <tr>
        <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
        <td id="LC63" class="blob-code js-file-line">   carefully, as they describe your rights and restrictions with respect</td>
      </tr>
      <tr>
        <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
        <td id="LC64" class="blob-code js-file-line">   to this document.  Code Components extracted from this document must</td>
      </tr>
      <tr>
        <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
        <td id="LC65" class="blob-code js-file-line">   include Simplified BSD License text as described in Section 4.e of</td>
      </tr>
      <tr>
        <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
        <td id="LC66" class="blob-code js-file-line">   the Trust Legal Provisions and are provided without warranty as</td>
      </tr>
      <tr>
        <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
        <td id="LC67" class="blob-code js-file-line">   described in the Simplified BSD License.</td>
      </tr>
      <tr>
        <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
        <td id="LC68" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
        <td id="LC69" class="blob-code js-file-line">Table of Contents</td>
      </tr>
      <tr>
        <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
        <td id="LC70" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
        <td id="LC71" class="blob-code js-file-line">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td>
      </tr>
      <tr>
        <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
        <td id="LC72" class="blob-code js-file-line">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   4</td>
      </tr>
      <tr>
        <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
        <td id="LC73" class="blob-code js-file-line">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td>
      </tr>
      <tr>
        <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
        <td id="LC74" class="blob-code js-file-line">     3.1.  Piggybacking Principle (Non normative)  . . . . . . . . .   6</td>
      </tr>
      <tr>
        <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
        <td id="LC75" class="blob-code js-file-line">     3.2.  DOIC Capability Announcement (Non normative)  . . . . . .   7</td>
      </tr>
      <tr>
        <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
        <td id="LC76" class="blob-code js-file-line">     3.3.  DOIC Overload Condition Reporting (Non normative) . . . .   9</td>
      </tr>
      <tr>
        <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
        <td id="LC77" class="blob-code js-file-line">     3.4.  DOIC Extensibility (Non normative)  . . . . . . . . . . .  10</td>
      </tr>
      <tr>
        <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
        <td id="LC78" class="blob-code js-file-line">     3.5.  Simplified Example Architecture (Non normative) . . . . .  10</td>
      </tr>
      <tr>
        <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
        <td id="LC79" class="blob-code js-file-line">     3.6.  Considerations for Applications Integrating the DOIC</td>
      </tr>
      <tr>
        <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
        <td id="LC80" class="blob-code js-file-line">           Solution (Non normative)  . . . . . . . . . . . . . . . .  11</td>
      </tr>
      <tr>
        <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
        <td id="LC81" class="blob-code js-file-line">       3.6.1.  Application Classification  (Non normative) . . . . .  11</td>
      </tr>
      <tr>
        <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
        <td id="LC82" class="blob-code js-file-line">       3.6.2.  Application Type Overload Implications  (Non</td>
      </tr>
      <tr>
        <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
        <td id="LC83" class="blob-code js-file-line">               normative)  . . . . . . . . . . . . . . . . . . . . .  12</td>
      </tr>
      <tr>
        <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
        <td id="LC84" class="blob-code js-file-line">       3.6.3.  Request Transaction Classification  (Non normative) .  14</td>
      </tr>
      <tr>
        <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
        <td id="LC85" class="blob-code js-file-line">       3.6.4.  Request Type Overload Implications  (Non normative) .  14</td>
      </tr>
      <tr>
        <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
        <td id="LC86" class="blob-code js-file-line">   4.  Solution Procedures (Normative) . . . . . . . . . . . . . . .  16</td>
      </tr>
      <tr>
        <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
        <td id="LC87" class="blob-code js-file-line">     4.1.  Capability Announcement (Normative) . . . . . . . . . . .  16</td>
      </tr>
      <tr>
        <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
        <td id="LC88" class="blob-code js-file-line">       4.1.1.  Reacting Node Behavior (Normative)  . . . . . . . . .  16</td>
      </tr>
      <tr>
        <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
        <td id="LC89" class="blob-code js-file-line">       4.1.2.  Reporting Node Behavior  (Normative)  . . . . . . . .  17</td>
      </tr>
      <tr>
        <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
        <td id="LC90" class="blob-code js-file-line">       4.1.3.  Agent Behavior  (Normative) . . . . . . . . . . . . .  18</td>
      </tr>
      <tr>
        <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
        <td id="LC91" class="blob-code js-file-line">     4.2.  Overload Report Processing (Normative)  . . . . . . . . .  18</td>
      </tr>
      <tr>
        <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
        <td id="LC92" class="blob-code js-file-line">       4.2.1.  Overload Control State (Normative)  . . . . . . . . .  18</td>
      </tr>
      <tr>
        <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
        <td id="LC93" class="blob-code js-file-line">       4.2.2.  Reacting Node Behavior  (Normative) . . . . . . . . .  20</td>
      </tr>
      <tr>
        <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
        <td id="LC94" class="blob-code js-file-line">       4.2.3.  Reporting Node Behavior  (Normative)  . . . . . . . .  22</td>
      </tr>
      <tr>
        <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
        <td id="LC95" class="blob-code js-file-line">       4.2.4.  Agent Behavior  (Normative) . . . . . . . . . . . . .  22</td>
      </tr>
      <tr>
        <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
        <td id="LC96" class="blob-code js-file-line">     4.3.  Protocol Extensibility (Normative)  . . . . . . . . . . .  23</td>
      </tr>
      <tr>
        <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
        <td id="LC97" class="blob-code js-file-line">   5.  Loss Algorithm (Normative)  . . . . . . . . . . . . . . . . .  24</td>
      </tr>
      <tr>
        <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
        <td id="LC98" class="blob-code js-file-line">     5.1.  Overview (Non normative)  . . . . . . . . . . . . . . . .  24</td>
      </tr>
      <tr>
        <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
        <td id="LC99" class="blob-code js-file-line">     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</td>
      </tr>
      <tr>
        <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
        <td id="LC100" class="blob-code js-file-line">     5.3.  Reporting Node Behavior (Normative) . . . . . . . . . . .  25</td>
      </tr>
      <tr>
        <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
        <td id="LC101" class="blob-code js-file-line">     5.4.  Reacting Node Behavior (Normative)  . . . . . . . . . . .  25</td>
      </tr>
      <tr>
        <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
        <td id="LC102" class="blob-code js-file-line">   6.  Attribute Value Pairs (Normative) . . . . . . . . . . . . . .  26</td>
      </tr>
      <tr>
        <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
        <td id="LC103" class="blob-code js-file-line">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27</td>
      </tr>
      <tr>
        <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
        <td id="LC104" class="blob-code js-file-line">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td>
      </tr>
      <tr>
        <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
        <td id="LC105" class="blob-code js-file-line">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28</td>
      </tr>
      <tr>
        <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
        <td id="LC106" class="blob-code js-file-line">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29</td>
      </tr>
      <tr>
        <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
        <td id="LC107" class="blob-code js-file-line">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29</td>
      </tr>
      <tr>
        <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
        <td id="LC108" class="blob-code js-file-line">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30</td>
      </tr>
      <tr>
        <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
        <td id="LC109" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
        <td id="LC110" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
        <td id="LC111" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
        <td id="LC112" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 2]</td>
      </tr>
      <tr>
        <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
        <td id="LC113" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
        <td id="LC114" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
        <td id="LC115" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
        <td id="LC116" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
        <td id="LC117" class="blob-code js-file-line">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31</td>
      </tr>
      <tr>
        <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
        <td id="LC118" class="blob-code js-file-line">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td>
      </tr>
      <tr>
        <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
        <td id="LC119" class="blob-code js-file-line">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32</td>
      </tr>
      <tr>
        <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
        <td id="LC120" class="blob-code js-file-line">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32</td>
      </tr>
      <tr>
        <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
        <td id="LC121" class="blob-code js-file-line">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32</td>
      </tr>
      <tr>
        <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
        <td id="LC122" class="blob-code js-file-line">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  33</td>
      </tr>
      <tr>
        <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
        <td id="LC123" class="blob-code js-file-line">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  33</td>
      </tr>
      <tr>
        <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
        <td id="LC124" class="blob-code js-file-line">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33</td>
      </tr>
      <tr>
        <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
        <td id="LC125" class="blob-code js-file-line">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34</td>
      </tr>
      <tr>
        <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
        <td id="LC126" class="blob-code js-file-line">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  35</td>
      </tr>
      <tr>
        <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
        <td id="LC127" class="blob-code js-file-line">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  35</td>
      </tr>
      <tr>
        <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
        <td id="LC128" class="blob-code js-file-line">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  36</td>
      </tr>
      <tr>
        <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
        <td id="LC129" class="blob-code js-file-line">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36</td>
      </tr>
      <tr>
        <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
        <td id="LC130" class="blob-code js-file-line">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36</td>
      </tr>
      <tr>
        <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
        <td id="LC131" class="blob-code js-file-line">     11.2.  Informative References . . . . . . . . . . . . . . . . .  37</td>
      </tr>
      <tr>
        <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
        <td id="LC132" class="blob-code js-file-line">   Appendix A.  Issues left for future specifications  . . . . . . .  37</td>
      </tr>
      <tr>
        <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
        <td id="LC133" class="blob-code js-file-line">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37</td>
      </tr>
      <tr>
        <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
        <td id="LC134" class="blob-code js-file-line">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37</td>
      </tr>
      <tr>
        <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
        <td id="LC135" class="blob-code js-file-line">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38</td>
      </tr>
      <tr>
        <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
        <td id="LC136" class="blob-code js-file-line">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38</td>
      </tr>
      <tr>
        <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
        <td id="LC137" class="blob-code js-file-line">     B.1.  Mix of Destination-Realm routed requests and Destination-</td>
      </tr>
      <tr>
        <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
        <td id="LC138" class="blob-code js-file-line">           Host routed requests  . . . . . . . . . . . . . . . . . .  38</td>
      </tr>
      <tr>
        <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
        <td id="LC139" class="blob-code js-file-line">   Appendix C.  Restructuring of -02 version of the draft  . . . . .  41</td>
      </tr>
      <tr>
        <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
        <td id="LC140" class="blob-code js-file-line">   Authors&#39; Addresses  . . . . . . . . . . . . . . . . . . . . . . .  44</td>
      </tr>
      <tr>
        <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
        <td id="LC141" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
        <td id="LC142" class="blob-code js-file-line">1.  Introduction</td>
      </tr>
      <tr>
        <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
        <td id="LC143" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
        <td id="LC144" class="blob-code js-file-line">   This specification defines a base solution for Diameter Overload</td>
      </tr>
      <tr>
        <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
        <td id="LC145" class="blob-code js-file-line">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td>
      </tr>
      <tr>
        <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
        <td id="LC146" class="blob-code js-file-line">   (DOIC).  The requirements for the solution are described and</td>
      </tr>
      <tr>
        <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
        <td id="LC147" class="blob-code js-file-line">   discussed in the corresponding design requirements document</td>
      </tr>
      <tr>
        <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
        <td id="LC148" class="blob-code js-file-line">   [RFC7068].  Note that the overload control solution defined in this</td>
      </tr>
      <tr>
        <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
        <td id="LC149" class="blob-code js-file-line">   specification does not address all the requirements listed in</td>
      </tr>
      <tr>
        <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
        <td id="LC150" class="blob-code js-file-line">   [RFC7068].  A number of overload control related features are left</td>
      </tr>
      <tr>
        <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
        <td id="LC151" class="blob-code js-file-line">   for the future specifications.</td>
      </tr>
      <tr>
        <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
        <td id="LC152" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
        <td id="LC153" class="blob-code js-file-line">   The solution defined in this specification addresses Diameter</td>
      </tr>
      <tr>
        <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
        <td id="LC154" class="blob-code js-file-line">   overload control between Diameter nodes that support the DOIC</td>
      </tr>
      <tr>
        <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
        <td id="LC155" class="blob-code js-file-line">   solution.  Furthermore, the solution is designed to apply to existing</td>
      </tr>
      <tr>
        <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
        <td id="LC156" class="blob-code js-file-line">   and future Diameter applications, requires no changes to the Diameter</td>
      </tr>
      <tr>
        <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
        <td id="LC157" class="blob-code js-file-line">   base protocol [RFC6733] and is deployable in environments where some</td>
      </tr>
      <tr>
        <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
        <td id="LC158" class="blob-code js-file-line">   Diameter nodes do not implement the Diameter overload control</td>
      </tr>
      <tr>
        <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
        <td id="LC159" class="blob-code js-file-line">   solution defined in this specification.</td>
      </tr>
      <tr>
        <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
        <td id="LC160" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
        <td id="LC161" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
        <td id="LC162" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
        <td id="LC163" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
        <td id="LC164" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
        <td id="LC165" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
        <td id="LC166" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
        <td id="LC167" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
        <td id="LC168" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 3]</td>
      </tr>
      <tr>
        <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
        <td id="LC169" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
        <td id="LC170" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
        <td id="LC171" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
        <td id="LC172" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
        <td id="LC173" class="blob-code js-file-line">2.  Terminology and Abbreviations</td>
      </tr>
      <tr>
        <td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
        <td id="LC174" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
        <td id="LC175" class="blob-code js-file-line">   Abatement Algorithm</td>
      </tr>
      <tr>
        <td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
        <td id="LC176" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
        <td id="LC177" class="blob-code js-file-line">      An algorithm requested by reporting nodes and used by reacting</td>
      </tr>
      <tr>
        <td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
        <td id="LC178" class="blob-code js-file-line">      nodes to reduce the amount of traffic sent during an occurrence of</td>
      </tr>
      <tr>
        <td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
        <td id="LC179" class="blob-code js-file-line">      overload control.</td>
      </tr>
      <tr>
        <td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
        <td id="LC180" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
        <td id="LC181" class="blob-code js-file-line">   Throttling</td>
      </tr>
      <tr>
        <td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
        <td id="LC182" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
        <td id="LC183" class="blob-code js-file-line">      Throttling is the reduction of the number of requests sent to an</td>
      </tr>
      <tr>
        <td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
        <td id="LC184" class="blob-code js-file-line">      entity.  Throttling can include a client dropping requests, or an</td>
      </tr>
      <tr>
        <td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
        <td id="LC185" class="blob-code js-file-line">      agent rejecting requests with appropriate error responses.</td>
      </tr>
      <tr>
        <td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
        <td id="LC186" class="blob-code js-file-line">      Clients and agents can also choose to redirect throttled requests</td>
      </tr>
      <tr>
        <td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
        <td id="LC187" class="blob-code js-file-line">      to some other entity or entities capable of handling them.</td>
      </tr>
      <tr>
        <td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
        <td id="LC188" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
        <td id="LC189" class="blob-code js-file-line">      Editor&#39;s note: Propose to add a definition of Abatement to include</td>
      </tr>
      <tr>
        <td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
        <td id="LC190" class="blob-code js-file-line">      both throttling and diversion (redirecting of messages) actions.</td>
      </tr>
      <tr>
        <td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
        <td id="LC191" class="blob-code js-file-line">      Then to modify this definition to include just the rejecting of</td>
      </tr>
      <tr>
        <td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
        <td id="LC192" class="blob-code js-file-line">      requests and adding a definition of diversion.</td>
      </tr>
      <tr>
        <td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
        <td id="LC193" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
        <td id="LC194" class="blob-code js-file-line">   Reporting Node</td>
      </tr>
      <tr>
        <td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
        <td id="LC195" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
        <td id="LC196" class="blob-code js-file-line">      A Diameter node that generates an overload report.  (This may or</td>
      </tr>
      <tr>
        <td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
        <td id="LC197" class="blob-code js-file-line">      may not be the overloaded node.)</td>
      </tr>
      <tr>
        <td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
        <td id="LC198" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
        <td id="LC199" class="blob-code js-file-line">   Reacting Node</td>
      </tr>
      <tr>
        <td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
        <td id="LC200" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
        <td id="LC201" class="blob-code js-file-line">      A Diameter node that consumes and acts upon a report.  Note that</td>
      </tr>
      <tr>
        <td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
        <td id="LC202" class="blob-code js-file-line">      &quot;act upon&quot; does not necessarily mean the reacting node applies an</td>
      </tr>
      <tr>
        <td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
        <td id="LC203" class="blob-code js-file-line">      abatement algorithm; it might decide to delegate that downstream,</td>
      </tr>
      <tr>
        <td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
        <td id="LC204" class="blob-code js-file-line">      in which case it also becomes a &quot;reporting node&quot;.</td>
      </tr>
      <tr>
        <td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
        <td id="LC205" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
        <td id="LC206" class="blob-code js-file-line">   Overload Control State (OCS)</td>
      </tr>
      <tr>
        <td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
        <td id="LC207" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
        <td id="LC208" class="blob-code js-file-line">      State describing an occurrence of overload control maintained by</td>
      </tr>
      <tr>
        <td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
        <td id="LC209" class="blob-code js-file-line">      reporting and reacting nodes.</td>
      </tr>
      <tr>
        <td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
        <td id="LC210" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
        <td id="LC211" class="blob-code js-file-line">   Overload Report (OLR)</td>
      </tr>
      <tr>
        <td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
        <td id="LC212" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
        <td id="LC213" class="blob-code js-file-line">      A set of AVPs sent by a reporting node indicating the start or</td>
      </tr>
      <tr>
        <td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
        <td id="LC214" class="blob-code js-file-line">      continuation of an occurrence of overload control.</td>
      </tr>
      <tr>
        <td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
        <td id="LC215" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
        <td id="LC216" class="blob-code js-file-line">3.  Solution Overview</td>
      </tr>
      <tr>
        <td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
        <td id="LC217" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
        <td id="LC218" class="blob-code js-file-line">   The Diameter Overload Information Conveyance (DOIC) mechanism allows</td>
      </tr>
      <tr>
        <td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
        <td id="LC219" class="blob-code js-file-line">   Diameter nodes to request other nodes to perform overload abatement</td>
      </tr>
      <tr>
        <td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
        <td id="LC220" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
        <td id="LC221" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
        <td id="LC222" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
        <td id="LC223" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
        <td id="LC224" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 4]</td>
      </tr>
      <tr>
        <td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
        <td id="LC225" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
        <td id="LC226" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
        <td id="LC227" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
        <td id="LC228" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L229" class="blob-num js-line-number" data-line-number="229"></td>
        <td id="LC229" class="blob-code js-file-line">   actions, that is, actions to reduce the load offered to the</td>
      </tr>
      <tr>
        <td id="L230" class="blob-num js-line-number" data-line-number="230"></td>
        <td id="LC230" class="blob-code js-file-line">   overloaded node or realm.</td>
      </tr>
      <tr>
        <td id="L231" class="blob-num js-line-number" data-line-number="231"></td>
        <td id="LC231" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L232" class="blob-num js-line-number" data-line-number="232"></td>
        <td id="LC232" class="blob-code js-file-line">   A Diameter node that supports DOIC is known as a &quot;DOIC node&quot;.  Any</td>
      </tr>
      <tr>
        <td id="L233" class="blob-num js-line-number" data-line-number="233"></td>
        <td id="LC233" class="blob-code js-file-line">   Diameter node can act as a DOIC node, including clients, servers, and</td>
      </tr>
      <tr>
        <td id="L234" class="blob-num js-line-number" data-line-number="234"></td>
        <td id="LC234" class="blob-code js-file-line">   agents.  DOIC nodes are further divided into &quot;Reporting Nodes&quot; and</td>
      </tr>
      <tr>
        <td id="L235" class="blob-num js-line-number" data-line-number="235"></td>
        <td id="LC235" class="blob-code js-file-line">   &quot;Reacting Nodes.&quot;  A reporting node requests overload abatement by</td>
      </tr>
      <tr>
        <td id="L236" class="blob-num js-line-number" data-line-number="236"></td>
        <td id="LC236" class="blob-code js-file-line">   sending an Overload Report (OLR) to one or more reacting nodes.</td>
      </tr>
      <tr>
        <td id="L237" class="blob-num js-line-number" data-line-number="237"></td>
        <td id="LC237" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L238" class="blob-num js-line-number" data-line-number="238"></td>
        <td id="LC238" class="blob-code js-file-line">   A reacting node consumes OLRs, and performs whatever actions are</td>
      </tr>
      <tr>
        <td id="L239" class="blob-num js-line-number" data-line-number="239"></td>
        <td id="LC239" class="blob-code js-file-line">   needed to fulfill the abatement requests included in the OLRs.  A</td>
      </tr>
      <tr>
        <td id="L240" class="blob-num js-line-number" data-line-number="240"></td>
        <td id="LC240" class="blob-code js-file-line">   Reporting node may report overload on its own behalf, or on behalf of</td>
      </tr>
      <tr>
        <td id="L241" class="blob-num js-line-number" data-line-number="241"></td>
        <td id="LC241" class="blob-code js-file-line">   other (typically upstream) nodes.  Likewise, a reacting node may</td>
      </tr>
      <tr>
        <td id="L242" class="blob-num js-line-number" data-line-number="242"></td>
        <td id="LC242" class="blob-code js-file-line">   perform overload abatement on its own behalf, or on behalf of other</td>
      </tr>
      <tr>
        <td id="L243" class="blob-num js-line-number" data-line-number="243"></td>
        <td id="LC243" class="blob-code js-file-line">   (typically downstream) nodes.</td>
      </tr>
      <tr>
        <td id="L244" class="blob-num js-line-number" data-line-number="244"></td>
        <td id="LC244" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L245" class="blob-num js-line-number" data-line-number="245"></td>
        <td id="LC245" class="blob-code js-file-line">   A node&#39;s role as a DOIC node is independent of its Diameter role.</td>
      </tr>
      <tr>
        <td id="L246" class="blob-num js-line-number" data-line-number="246"></td>
        <td id="LC246" class="blob-code js-file-line">   For example, Diameter relay and proxy agents may act as DOIC nodes,</td>
      </tr>
      <tr>
        <td id="L247" class="blob-num js-line-number" data-line-number="247"></td>
        <td id="LC247" class="blob-code js-file-line">   even though they are not endpoints in the Diameter sense.  Since</td>
      </tr>
      <tr>
        <td id="L248" class="blob-num js-line-number" data-line-number="248"></td>
        <td id="LC248" class="blob-code js-file-line">   Diameter enables bi-directional applications, where Diameter servers</td>
      </tr>
      <tr>
        <td id="L249" class="blob-num js-line-number" data-line-number="249"></td>
        <td id="LC249" class="blob-code js-file-line">   can send requests towards Diameter clients, a given Diameter node can</td>
      </tr>
      <tr>
        <td id="L250" class="blob-num js-line-number" data-line-number="250"></td>
        <td id="LC250" class="blob-code js-file-line">   simultaneously act as a reporting node and a reacting node.</td>
      </tr>
      <tr>
        <td id="L251" class="blob-num js-line-number" data-line-number="251"></td>
        <td id="LC251" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L252" class="blob-num js-line-number" data-line-number="252"></td>
        <td id="LC252" class="blob-code js-file-line">   Likewise, a relay or proxy agent may act as a reacting node from the</td>
      </tr>
      <tr>
        <td id="L253" class="blob-num js-line-number" data-line-number="253"></td>
        <td id="LC253" class="blob-code js-file-line">   perspective of upstream nodes, and a reporting node from the</td>
      </tr>
      <tr>
        <td id="L254" class="blob-num js-line-number" data-line-number="254"></td>
        <td id="LC254" class="blob-code js-file-line">   perspective of downstream nodes.</td>
      </tr>
      <tr>
        <td id="L255" class="blob-num js-line-number" data-line-number="255"></td>
        <td id="LC255" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L256" class="blob-num js-line-number" data-line-number="256"></td>
        <td id="LC256" class="blob-code js-file-line">   DOIC nodes do not generate new messages to carry DOIC related</td>
      </tr>
      <tr>
        <td id="L257" class="blob-num js-line-number" data-line-number="257"></td>
        <td id="LC257" class="blob-code js-file-line">   information.  Rather, they &quot;piggyback&quot; DOIC information over existing</td>
      </tr>
      <tr>
        <td id="L258" class="blob-num js-line-number" data-line-number="258"></td>
        <td id="LC258" class="blob-code js-file-line">   Diameter messages by inserting new AVPs into existing Diameter</td>
      </tr>
      <tr>
        <td id="L259" class="blob-num js-line-number" data-line-number="259"></td>
        <td id="LC259" class="blob-code js-file-line">   requests and responses.  Nodes indicate support for DOIC, and any</td>
      </tr>
      <tr>
        <td id="L260" class="blob-num js-line-number" data-line-number="260"></td>
        <td id="LC260" class="blob-code js-file-line">   needed DOIC parameters by inserting an OC_Supported_Features AVP</td>
      </tr>
      <tr>
        <td id="L261" class="blob-num js-line-number" data-line-number="261"></td>
        <td id="LC261" class="blob-code js-file-line">   (Section 6.2) into existing requests and responses.  Reporting nodes</td>
      </tr>
      <tr>
        <td id="L262" class="blob-num js-line-number" data-line-number="262"></td>
        <td id="LC262" class="blob-code js-file-line">   send OLRs by inserting OC-OLR AVPs (Section 6.3).</td>
      </tr>
      <tr>
        <td id="L263" class="blob-num js-line-number" data-line-number="263"></td>
        <td id="LC263" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L264" class="blob-num js-line-number" data-line-number="264"></td>
        <td id="LC264" class="blob-code js-file-line">   A given OLR applies to the Diameter realm and application of the</td>
      </tr>
      <tr>
        <td id="L265" class="blob-num js-line-number" data-line-number="265"></td>
        <td id="LC265" class="blob-code js-file-line">   Diameter message that carries it.  If a reporting node supports more</td>
      </tr>
      <tr>
        <td id="L266" class="blob-num js-line-number" data-line-number="266"></td>
        <td id="LC266" class="blob-code js-file-line">   than one realm and/or application, it reports independently for each</td>
      </tr>
      <tr>
        <td id="L267" class="blob-num js-line-number" data-line-number="267"></td>
        <td id="LC267" class="blob-code js-file-line">   combination of realm and application.  Similarly, OC-Feature-Vector</td>
      </tr>
      <tr>
        <td id="L268" class="blob-num js-line-number" data-line-number="268"></td>
        <td id="LC268" class="blob-code js-file-line">   AVPs apply to the realm and application of the enclosing message.</td>
      </tr>
      <tr>
        <td id="L269" class="blob-num js-line-number" data-line-number="269"></td>
        <td id="LC269" class="blob-code js-file-line">   This implies that a node may support DOIC for one application and/or</td>
      </tr>
      <tr>
        <td id="L270" class="blob-num js-line-number" data-line-number="270"></td>
        <td id="LC270" class="blob-code js-file-line">   realm, but not another, and may indicate different DOIC parameters</td>
      </tr>
      <tr>
        <td id="L271" class="blob-num js-line-number" data-line-number="271"></td>
        <td id="LC271" class="blob-code js-file-line">   for each application and realm for which it supports DOIC.</td>
      </tr>
      <tr>
        <td id="L272" class="blob-num js-line-number" data-line-number="272"></td>
        <td id="LC272" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L273" class="blob-num js-line-number" data-line-number="273"></td>
        <td id="LC273" class="blob-code js-file-line">   Reacting nodes perform overload abatement according to an agreed-upon</td>
      </tr>
      <tr>
        <td id="L274" class="blob-num js-line-number" data-line-number="274"></td>
        <td id="LC274" class="blob-code js-file-line">   abatement algorithm.  An abatement algorithm defines the meaning of</td>
      </tr>
      <tr>
        <td id="L275" class="blob-num js-line-number" data-line-number="275"></td>
        <td id="LC275" class="blob-code js-file-line">   the parameters of an OLR, and the procedures required for overload</td>
      </tr>
      <tr>
        <td id="L276" class="blob-num js-line-number" data-line-number="276"></td>
        <td id="LC276" class="blob-code js-file-line">   abatement.  This document specifies a single must-support algorithm,</td>
      </tr>
      <tr>
        <td id="L277" class="blob-num js-line-number" data-line-number="277"></td>
        <td id="LC277" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L278" class="blob-num js-line-number" data-line-number="278"></td>
        <td id="LC278" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L279" class="blob-num js-line-number" data-line-number="279"></td>
        <td id="LC279" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L280" class="blob-num js-line-number" data-line-number="280"></td>
        <td id="LC280" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 5]</td>
      </tr>
      <tr>
        <td id="L281" class="blob-num js-line-number" data-line-number="281"></td>
        <td id="LC281" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L282" class="blob-num js-line-number" data-line-number="282"></td>
        <td id="LC282" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L283" class="blob-num js-line-number" data-line-number="283"></td>
        <td id="LC283" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L284" class="blob-num js-line-number" data-line-number="284"></td>
        <td id="LC284" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L285" class="blob-num js-line-number" data-line-number="285"></td>
        <td id="LC285" class="blob-code js-file-line">   namely the &quot;loss&quot; algorithm Section 5).  Future specifications may</td>
      </tr>
      <tr>
        <td id="L286" class="blob-num js-line-number" data-line-number="286"></td>
        <td id="LC286" class="blob-code js-file-line">   introduce new algorithms.</td>
      </tr>
      <tr>
        <td id="L287" class="blob-num js-line-number" data-line-number="287"></td>
        <td id="LC287" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L288" class="blob-num js-line-number" data-line-number="288"></td>
        <td id="LC288" class="blob-code js-file-line">   Overload conditions may vary in scope.  For example, a single</td>
      </tr>
      <tr>
        <td id="L289" class="blob-num js-line-number" data-line-number="289"></td>
        <td id="LC289" class="blob-code js-file-line">   Diameter node may be overloaded, in which case reacting nodes may</td>
      </tr>
      <tr>
        <td id="L290" class="blob-num js-line-number" data-line-number="290"></td>
        <td id="LC290" class="blob-code js-file-line">   reasonably attempt to send throttled requests to other destinations</td>
      </tr>
      <tr>
        <td id="L291" class="blob-num js-line-number" data-line-number="291"></td>
        <td id="LC291" class="blob-code js-file-line">   or via other agents.  On the other hand, an entire Diameter realm may</td>
      </tr>
      <tr>
        <td id="L292" class="blob-num js-line-number" data-line-number="292"></td>
        <td id="LC292" class="blob-code js-file-line">   be overloaded, in which case such attempts would do harm.  DOIC OLRs</td>
      </tr>
      <tr>
        <td id="L293" class="blob-num js-line-number" data-line-number="293"></td>
        <td id="LC293" class="blob-code js-file-line">   have a concept of &quot;report type&quot; (Section 6.6), where the type defines</td>
      </tr>
      <tr>
        <td id="L294" class="blob-num js-line-number" data-line-number="294"></td>
        <td id="LC294" class="blob-code js-file-line">   such behaviors.  Report types are extensible.  This document defines</td>
      </tr>
      <tr>
        <td id="L295" class="blob-num js-line-number" data-line-number="295"></td>
        <td id="LC295" class="blob-code js-file-line">   report types for overload of a specific server, and for overload of</td>
      </tr>
      <tr>
        <td id="L296" class="blob-num js-line-number" data-line-number="296"></td>
        <td id="LC296" class="blob-code js-file-line">   an entire realm.</td>
      </tr>
      <tr>
        <td id="L297" class="blob-num js-line-number" data-line-number="297"></td>
        <td id="LC297" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L298" class="blob-num js-line-number" data-line-number="298"></td>
        <td id="LC298" class="blob-code js-file-line">   A report of type host is sent to indicate the overload of a specific</td>
      </tr>
      <tr>
        <td id="L299" class="blob-num js-line-number" data-line-number="299"></td>
        <td id="LC299" class="blob-code js-file-line">   server for the application-id indicated in the transaction.  When</td>
      </tr>
      <tr>
        <td id="L300" class="blob-num js-line-number" data-line-number="300"></td>
        <td id="LC300" class="blob-code js-file-line">   receiving an OLR of type host, a reacting node applies overload</td>
      </tr>
      <tr>
        <td id="L301" class="blob-num js-line-number" data-line-number="301"></td>
        <td id="LC301" class="blob-code js-file-line">   abatement to what is referred to in this document as host-routed</td>
      </tr>
      <tr>
        <td id="L302" class="blob-num js-line-number" data-line-number="302"></td>
        <td id="LC302" class="blob-code js-file-line">   requests.  This is the set of requests that the reacting node knows</td>
      </tr>
      <tr>
        <td id="L303" class="blob-num js-line-number" data-line-number="303"></td>
        <td id="LC303" class="blob-code js-file-line">   will be served by a particular host, either due to the presence of a</td>
      </tr>
      <tr>
        <td id="L304" class="blob-num js-line-number" data-line-number="304"></td>
        <td id="LC304" class="blob-code js-file-line">   Destination-Host AVP, or by some other local knowledge on the part of</td>
      </tr>
      <tr>
        <td id="L305" class="blob-num js-line-number" data-line-number="305"></td>
        <td id="LC305" class="blob-code js-file-line">   the reacting node.  The reacting node applies overload abatement on</td>
      </tr>
      <tr>
        <td id="L306" class="blob-num js-line-number" data-line-number="306"></td>
        <td id="LC306" class="blob-code js-file-line">   those host-routed requests which the reacting node knows will be</td>
      </tr>
      <tr>
        <td id="L307" class="blob-num js-line-number" data-line-number="307"></td>
        <td id="LC307" class="blob-code js-file-line">   served by the server that matches the Origin-Host AVP of the received</td>
      </tr>
      <tr>
        <td id="L308" class="blob-num js-line-number" data-line-number="308"></td>
        <td id="LC308" class="blob-code js-file-line">   message that contained the received OLR of type host.</td>
      </tr>
      <tr>
        <td id="L309" class="blob-num js-line-number" data-line-number="309"></td>
        <td id="LC309" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L310" class="blob-num js-line-number" data-line-number="310"></td>
        <td id="LC310" class="blob-code js-file-line">   A report type of realm is sent to indicate the overload of all</td>
      </tr>
      <tr>
        <td id="L311" class="blob-num js-line-number" data-line-number="311"></td>
        <td id="LC311" class="blob-code js-file-line">   servers in a realm for the application-id.  When receiving an OLR of</td>
      </tr>
      <tr>
        <td id="L312" class="blob-num js-line-number" data-line-number="312"></td>
        <td id="LC312" class="blob-code js-file-line">   type realm, a reacting node applies overload abatement to what is</td>
      </tr>
      <tr>
        <td id="L313" class="blob-num js-line-number" data-line-number="313"></td>
        <td id="LC313" class="blob-code js-file-line">   referred to in this document as realm-routed requests.  This is the</td>
      </tr>
      <tr>
        <td id="L314" class="blob-num js-line-number" data-line-number="314"></td>
        <td id="LC314" class="blob-code js-file-line">   set of requests that are not host-routed as defined in the previous</td>
      </tr>
      <tr>
        <td id="L315" class="blob-num js-line-number" data-line-number="315"></td>
        <td id="LC315" class="blob-code js-file-line">   paragraph.</td>
      </tr>
      <tr>
        <td id="L316" class="blob-num js-line-number" data-line-number="316"></td>
        <td id="LC316" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L317" class="blob-num js-line-number" data-line-number="317"></td>
        <td id="LC317" class="blob-code js-file-line">   While a reporting node sends OLRs to &quot;adjacent&quot; reacting nodes, nodes</td>
      </tr>
      <tr>
        <td id="L318" class="blob-num js-line-number" data-line-number="318"></td>
        <td id="LC318" class="blob-code js-file-line">   that are &quot;adjacent&quot; for DOIC purposes may not be adjacent from a</td>
      </tr>
      <tr>
        <td id="L319" class="blob-num js-line-number" data-line-number="319"></td>
        <td id="LC319" class="blob-code js-file-line">   Diameter, or transport, perspective.  For example, one or more</td>
      </tr>
      <tr>
        <td id="L320" class="blob-num js-line-number" data-line-number="320"></td>
        <td id="LC320" class="blob-code js-file-line">   Diameter agents that do not support DOIC may exist between a given</td>
      </tr>
      <tr>
        <td id="L321" class="blob-num js-line-number" data-line-number="321"></td>
        <td id="LC321" class="blob-code js-file-line">   pair of reporting and reacting nodes, as long as those agents pass</td>
      </tr>
      <tr>
        <td id="L322" class="blob-num js-line-number" data-line-number="322"></td>
        <td id="LC322" class="blob-code js-file-line">   unknown AVPs through unmolested.  The report types described in this</td>
      </tr>
      <tr>
        <td id="L323" class="blob-num js-line-number" data-line-number="323"></td>
        <td id="LC323" class="blob-code js-file-line">   document can safely pass through non-supporting agents.  This may not</td>
      </tr>
      <tr>
        <td id="L324" class="blob-num js-line-number" data-line-number="324"></td>
        <td id="LC324" class="blob-code js-file-line">   be true for report types defined in future specifications.  Documents</td>
      </tr>
      <tr>
        <td id="L325" class="blob-num js-line-number" data-line-number="325"></td>
        <td id="LC325" class="blob-code js-file-line">   that introduce new report types MUST describe any limitations on</td>
      </tr>
      <tr>
        <td id="L326" class="blob-num js-line-number" data-line-number="326"></td>
        <td id="LC326" class="blob-code js-file-line">   their use across non-supporting agents.</td>
      </tr>
      <tr>
        <td id="L327" class="blob-num js-line-number" data-line-number="327"></td>
        <td id="LC327" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L328" class="blob-num js-line-number" data-line-number="328"></td>
        <td id="LC328" class="blob-code js-file-line">3.1.  Piggybacking Principle (Non normative)</td>
      </tr>
      <tr>
        <td id="L329" class="blob-num js-line-number" data-line-number="329"></td>
        <td id="LC329" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L330" class="blob-num js-line-number" data-line-number="330"></td>
        <td id="LC330" class="blob-code js-file-line">   The overload control AVPs defined in this specification have been</td>
      </tr>
      <tr>
        <td id="L331" class="blob-num js-line-number" data-line-number="331"></td>
        <td id="LC331" class="blob-code js-file-line">   designed to be piggybacked on top of existing application message</td>
      </tr>
      <tr>
        <td id="L332" class="blob-num js-line-number" data-line-number="332"></td>
        <td id="LC332" class="blob-code js-file-line">   exchanges.  This is made possible by adding overload control top</td>
      </tr>
      <tr>
        <td id="L333" class="blob-num js-line-number" data-line-number="333"></td>
        <td id="LC333" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L334" class="blob-num js-line-number" data-line-number="334"></td>
        <td id="LC334" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L335" class="blob-num js-line-number" data-line-number="335"></td>
        <td id="LC335" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L336" class="blob-num js-line-number" data-line-number="336"></td>
        <td id="LC336" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 6]</td>
      </tr>
      <tr>
        <td id="L337" class="blob-num js-line-number" data-line-number="337"></td>
        <td id="LC337" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L338" class="blob-num js-line-number" data-line-number="338"></td>
        <td id="LC338" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L339" class="blob-num js-line-number" data-line-number="339"></td>
        <td id="LC339" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L340" class="blob-num js-line-number" data-line-number="340"></td>
        <td id="LC340" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L341" class="blob-num js-line-number" data-line-number="341"></td>
        <td id="LC341" class="blob-code js-file-line">   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as</td>
      </tr>
      <tr>
        <td id="L342" class="blob-num js-line-number" data-line-number="342"></td>
        <td id="LC342" class="blob-code js-file-line">   optional AVPs into existing commands when the corresponding Command</td>
      </tr>
      <tr>
        <td id="L343" class="blob-num js-line-number" data-line-number="343"></td>
        <td id="LC343" class="blob-code js-file-line">   Code Format (CCF) specification allows adding new optional AVPs (see</td>
      </tr>
      <tr>
        <td id="L344" class="blob-num js-line-number" data-line-number="344"></td>
        <td id="LC344" class="blob-code js-file-line">   Section 1.3.4 of [RFC6733]).</td>
      </tr>
      <tr>
        <td id="L345" class="blob-num js-line-number" data-line-number="345"></td>
        <td id="LC345" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L346" class="blob-num js-line-number" data-line-number="346"></td>
        <td id="LC346" class="blob-code js-file-line">   Reacting nodes indicate support for DOIC by including the OC-</td>
      </tr>
      <tr>
        <td id="L347" class="blob-num js-line-number" data-line-number="347"></td>
        <td id="LC347" class="blob-code js-file-line">   Supported-Features AVP all request messages originated or relayed by</td>
      </tr>
      <tr>
        <td id="L348" class="blob-num js-line-number" data-line-number="348"></td>
        <td id="LC348" class="blob-code js-file-line">   the Diameter node.</td>
      </tr>
      <tr>
        <td id="L349" class="blob-num js-line-number" data-line-number="349"></td>
        <td id="LC349" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L350" class="blob-num js-line-number" data-line-number="350"></td>
        <td id="LC350" class="blob-code js-file-line">   Reporting nodes indicate support for DOIC by including the OC-</td>
      </tr>
      <tr>
        <td id="L351" class="blob-num js-line-number" data-line-number="351"></td>
        <td id="LC351" class="blob-code js-file-line">   Supported-Features AVP in all answer messages originated or relayed</td>
      </tr>
      <tr>
        <td id="L352" class="blob-num js-line-number" data-line-number="352"></td>
        <td id="LC352" class="blob-code js-file-line">   by the Diameter node.  Reporting nodes also include overload reports</td>
      </tr>
      <tr>
        <td id="L353" class="blob-num js-line-number" data-line-number="353"></td>
        <td id="LC353" class="blob-code js-file-line">   using the OC-OLR AVP in answer messages.</td>
      </tr>
      <tr>
        <td id="L354" class="blob-num js-line-number" data-line-number="354"></td>
        <td id="LC354" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L355" class="blob-num js-line-number" data-line-number="355"></td>
        <td id="LC355" class="blob-code js-file-line">      Note: There is no new Diameter application defined to carry</td>
      </tr>
      <tr>
        <td id="L356" class="blob-num js-line-number" data-line-number="356"></td>
        <td id="LC356" class="blob-code js-file-line">      overload related AVPs.  The DOIC AVPs are carried in existing</td>
      </tr>
      <tr>
        <td id="L357" class="blob-num js-line-number" data-line-number="357"></td>
        <td id="LC357" class="blob-code js-file-line">      Diameter application messages.</td>
      </tr>
      <tr>
        <td id="L358" class="blob-num js-line-number" data-line-number="358"></td>
        <td id="LC358" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L359" class="blob-num js-line-number" data-line-number="359"></td>
        <td id="LC359" class="blob-code js-file-line">   Note that the overload control solution does not have fixed server</td>
      </tr>
      <tr>
        <td id="L360" class="blob-num js-line-number" data-line-number="360"></td>
        <td id="LC360" class="blob-code js-file-line">   and client roles.  The DOIC node role is determined based on the</td>
      </tr>
      <tr>
        <td id="L361" class="blob-num js-line-number" data-line-number="361"></td>
        <td id="LC361" class="blob-code js-file-line">   message type: whether the message is a request (i.e. sent by a</td>
      </tr>
      <tr>
        <td id="L362" class="blob-num js-line-number" data-line-number="362"></td>
        <td id="LC362" class="blob-code js-file-line">   &quot;reacting node&quot;) or an answer (i.e. send by a &quot;reporting node&quot;).</td>
      </tr>
      <tr>
        <td id="L363" class="blob-num js-line-number" data-line-number="363"></td>
        <td id="LC363" class="blob-code js-file-line">   Therefore, in a typical &quot;client-server&quot; deployment, the &quot;client&quot; MAY</td>
      </tr>
      <tr>
        <td id="L364" class="blob-num js-line-number" data-line-number="364"></td>
        <td id="LC364" class="blob-code js-file-line">   report its overload condition to the &quot;server&quot; for any server</td>
      </tr>
      <tr>
        <td id="L365" class="blob-num js-line-number" data-line-number="365"></td>
        <td id="LC365" class="blob-code js-file-line">   initiated message exchange.  An example of such is the server</td>
      </tr>
      <tr>
        <td id="L366" class="blob-num js-line-number" data-line-number="366"></td>
        <td id="LC366" class="blob-code js-file-line">   requesting a re-authentication from a client.</td>
      </tr>
      <tr>
        <td id="L367" class="blob-num js-line-number" data-line-number="367"></td>
        <td id="LC367" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L368" class="blob-num js-line-number" data-line-number="368"></td>
        <td id="LC368" class="blob-code js-file-line">3.2.  DOIC Capability Announcement (Non normative)</td>
      </tr>
      <tr>
        <td id="L369" class="blob-num js-line-number" data-line-number="369"></td>
        <td id="LC369" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L370" class="blob-num js-line-number" data-line-number="370"></td>
        <td id="LC370" class="blob-code js-file-line">   The DOIC solutions supports the ability for Diameter nodes to</td>
      </tr>
      <tr>
        <td id="L371" class="blob-num js-line-number" data-line-number="371"></td>
        <td id="LC371" class="blob-code js-file-line">   determine if other nodes in the path of a request support the</td>
      </tr>
      <tr>
        <td id="L372" class="blob-num js-line-number" data-line-number="372"></td>
        <td id="LC372" class="blob-code js-file-line">   solution.  This capability is refered to as DOIC Capability</td>
      </tr>
      <tr>
        <td id="L373" class="blob-num js-line-number" data-line-number="373"></td>
        <td id="LC373" class="blob-code js-file-line">   Announcement (DCA) and is separate from Diameter Capability Exchange.</td>
      </tr>
      <tr>
        <td id="L374" class="blob-num js-line-number" data-line-number="374"></td>
        <td id="LC374" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L375" class="blob-num js-line-number" data-line-number="375"></td>
        <td id="LC375" class="blob-code js-file-line">   The DCA mechanism is built around the piggybacking principle used for</td>
      </tr>
      <tr>
        <td id="L376" class="blob-num js-line-number" data-line-number="376"></td>
        <td id="LC376" class="blob-code js-file-line">   transporting Diameter overload AVPs.  This includes both DCA AVPs and</td>
      </tr>
      <tr>
        <td id="L377" class="blob-num js-line-number" data-line-number="377"></td>
        <td id="LC377" class="blob-code js-file-line">   AVPs associated with Diameter overload reports.  This allows for the</td>
      </tr>
      <tr>
        <td id="L378" class="blob-num js-line-number" data-line-number="378"></td>
        <td id="LC378" class="blob-code js-file-line">   DCA AVPs to be carried across Diameter nodes that do not support the</td>
      </tr>
      <tr>
        <td id="L379" class="blob-num js-line-number" data-line-number="379"></td>
        <td id="LC379" class="blob-code js-file-line">   DOIC solution.</td>
      </tr>
      <tr>
        <td id="L380" class="blob-num js-line-number" data-line-number="380"></td>
        <td id="LC380" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L381" class="blob-num js-line-number" data-line-number="381"></td>
        <td id="LC381" class="blob-code js-file-line">   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the</td>
      </tr>
      <tr>
        <td id="L382" class="blob-num js-line-number" data-line-number="382"></td>
        <td id="LC382" class="blob-code js-file-line">   Diameter overload features supported.</td>
      </tr>
      <tr>
        <td id="L383" class="blob-num js-line-number" data-line-number="383"></td>
        <td id="LC383" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L384" class="blob-num js-line-number" data-line-number="384"></td>
        <td id="LC384" class="blob-code js-file-line">   The first node in the path of a Diameter request that supports the</td>
      </tr>
      <tr>
        <td id="L385" class="blob-num js-line-number" data-line-number="385"></td>
        <td id="LC385" class="blob-code js-file-line">   DOIC solution inserts the OC-Supported-Feature AVP in the request</td>
      </tr>
      <tr>
        <td id="L386" class="blob-num js-line-number" data-line-number="386"></td>
        <td id="LC386" class="blob-code js-file-line">   message.  This includes an indication that it supports the loss</td>
      </tr>
      <tr>
        <td id="L387" class="blob-num js-line-number" data-line-number="387"></td>
        <td id="LC387" class="blob-code js-file-line">   overload abatement algorithm defined in this specification (see</td>
      </tr>
      <tr>
        <td id="L388" class="blob-num js-line-number" data-line-number="388"></td>
        <td id="LC388" class="blob-code js-file-line">   Section 5).  This insures that there is at least one commonly</td>
      </tr>
      <tr>
        <td id="L389" class="blob-num js-line-number" data-line-number="389"></td>
        <td id="LC389" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L390" class="blob-num js-line-number" data-line-number="390"></td>
        <td id="LC390" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L391" class="blob-num js-line-number" data-line-number="391"></td>
        <td id="LC391" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L392" class="blob-num js-line-number" data-line-number="392"></td>
        <td id="LC392" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 7]</td>
      </tr>
      <tr>
        <td id="L393" class="blob-num js-line-number" data-line-number="393"></td>
        <td id="LC393" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L394" class="blob-num js-line-number" data-line-number="394"></td>
        <td id="LC394" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L395" class="blob-num js-line-number" data-line-number="395"></td>
        <td id="LC395" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L396" class="blob-num js-line-number" data-line-number="396"></td>
        <td id="LC396" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L397" class="blob-num js-line-number" data-line-number="397"></td>
        <td id="LC397" class="blob-code js-file-line">   supported overload abatement algorithm between the reporting node and</td>
      </tr>
      <tr>
        <td id="L398" class="blob-num js-line-number" data-line-number="398"></td>
        <td id="LC398" class="blob-code js-file-line">   the reacting nodes in the path of the request.</td>
      </tr>
      <tr>
        <td id="L399" class="blob-num js-line-number" data-line-number="399"></td>
        <td id="LC399" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L400" class="blob-num js-line-number" data-line-number="400"></td>
        <td id="LC400" class="blob-code js-file-line">      DOIC must support deployments where Diameter Clients and/or</td>
      </tr>
      <tr>
        <td id="L401" class="blob-num js-line-number" data-line-number="401"></td>
        <td id="LC401" class="blob-code js-file-line">      Diameter servers do not support the DOIC solution.  In this</td>
      </tr>
      <tr>
        <td id="L402" class="blob-num js-line-number" data-line-number="402"></td>
        <td id="LC402" class="blob-code js-file-line">      scenario, it is assumed that Diameter Agents that support the DOIC</td>
      </tr>
      <tr>
        <td id="L403" class="blob-num js-line-number" data-line-number="403"></td>
        <td id="LC403" class="blob-code js-file-line">      solution will handle overload abatement for the non supporting</td>
      </tr>
      <tr>
        <td id="L404" class="blob-num js-line-number" data-line-number="404"></td>
        <td id="LC404" class="blob-code js-file-line">      clients.  In this case the DOIC agent will insert the OC-</td>
      </tr>
      <tr>
        <td id="L405" class="blob-num js-line-number" data-line-number="405"></td>
        <td id="LC405" class="blob-code js-file-line">      Supporting-Features AVP in requests that do not already contain</td>
      </tr>
      <tr>
        <td id="L406" class="blob-num js-line-number" data-line-number="406"></td>
        <td id="LC406" class="blob-code js-file-line">      one, telling the reporting node that there is a DOIC node that</td>
      </tr>
      <tr>
        <td id="L407" class="blob-num js-line-number" data-line-number="407"></td>
        <td id="LC407" class="blob-code js-file-line">      will handle overload abatement.</td>
      </tr>
      <tr>
        <td id="L408" class="blob-num js-line-number" data-line-number="408"></td>
        <td id="LC408" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L409" class="blob-num js-line-number" data-line-number="409"></td>
        <td id="LC409" class="blob-code js-file-line">   The reporting node inserts the OC-Supported-Feature AVP in all answer</td>
      </tr>
      <tr>
        <td id="L410" class="blob-num js-line-number" data-line-number="410"></td>
        <td id="LC410" class="blob-code js-file-line">   messages to requests that contained the OC-Supported-Feature AVP.</td>
      </tr>
      <tr>
        <td id="L411" class="blob-num js-line-number" data-line-number="411"></td>
        <td id="LC411" class="blob-code js-file-line">   The contents of the reporting node&#39;s OC-Supported-Feature AVP</td>
      </tr>
      <tr>
        <td id="L412" class="blob-num js-line-number" data-line-number="412"></td>
        <td id="LC412" class="blob-code js-file-line">   indicate the set of Diameter overload features supported by the</td>
      </tr>
      <tr>
        <td id="L413" class="blob-num js-line-number" data-line-number="413"></td>
        <td id="LC413" class="blob-code js-file-line">   reporting node with one exception.</td>
      </tr>
      <tr>
        <td id="L414" class="blob-num js-line-number" data-line-number="414"></td>
        <td id="LC414" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L415" class="blob-num js-line-number" data-line-number="415"></td>
        <td id="LC415" class="blob-code js-file-line">   The reporting node only includes an indication of support for one</td>
      </tr>
      <tr>
        <td id="L416" class="blob-num js-line-number" data-line-number="416"></td>
        <td id="LC416" class="blob-code js-file-line">   overload abatement algorithm.  This is the algorithm that the</td>
      </tr>
      <tr>
        <td id="L417" class="blob-num js-line-number" data-line-number="417"></td>
        <td id="LC417" class="blob-code js-file-line">   reporting node intends to use should it enter an overload condition.</td>
      </tr>
      <tr>
        <td id="L418" class="blob-num js-line-number" data-line-number="418"></td>
        <td id="LC418" class="blob-code js-file-line">   Reacting nodes can use the indicated overload abatement algorithm to</td>
      </tr>
      <tr>
        <td id="L419" class="blob-num js-line-number" data-line-number="419"></td>
        <td id="LC419" class="blob-code js-file-line">   prepare for possible overload reports.</td>
      </tr>
      <tr>
        <td id="L420" class="blob-num js-line-number" data-line-number="420"></td>
        <td id="LC420" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L421" class="blob-num js-line-number" data-line-number="421"></td>
        <td id="LC421" class="blob-code js-file-line">      Note that the loss algorithm defined in this document is a</td>
      </tr>
      <tr>
        <td id="L422" class="blob-num js-line-number" data-line-number="422"></td>
        <td id="LC422" class="blob-code js-file-line">      stateless abatement algorithm.  As a result it does not require</td>
      </tr>
      <tr>
        <td id="L423" class="blob-num js-line-number" data-line-number="423"></td>
        <td id="LC423" class="blob-code js-file-line">      any actions by reacting nodes prior to the receipt of an overload</td>
      </tr>
      <tr>
        <td id="L424" class="blob-num js-line-number" data-line-number="424"></td>
        <td id="LC424" class="blob-code js-file-line">      report.  Stateful abatement algorithms that base the abatement</td>
      </tr>
      <tr>
        <td id="L425" class="blob-num js-line-number" data-line-number="425"></td>
        <td id="LC425" class="blob-code js-file-line">      logic on a history of request messages sent might require reacting</td>
      </tr>
      <tr>
        <td id="L426" class="blob-num js-line-number" data-line-number="426"></td>
        <td id="LC426" class="blob-code js-file-line">      nodes to maintain state to insure that overload reports can be</td>
      </tr>
      <tr>
        <td id="L427" class="blob-num js-line-number" data-line-number="427"></td>
        <td id="LC427" class="blob-code js-file-line">      properly handled.</td>
      </tr>
      <tr>
        <td id="L428" class="blob-num js-line-number" data-line-number="428"></td>
        <td id="LC428" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L429" class="blob-num js-line-number" data-line-number="429"></td>
        <td id="LC429" class="blob-code js-file-line">   The individual features supported by the DOIC nodes are indicated in</td>
      </tr>
      <tr>
        <td id="L430" class="blob-num js-line-number" data-line-number="430"></td>
        <td id="LC430" class="blob-code js-file-line">   the OC-Feature-Vector AVP.  Any semantics associated with the</td>
      </tr>
      <tr>
        <td id="L431" class="blob-num js-line-number" data-line-number="431"></td>
        <td id="LC431" class="blob-code js-file-line">   features will be defined in extension specifications that introduce</td>
      </tr>
      <tr>
        <td id="L432" class="blob-num js-line-number" data-line-number="432"></td>
        <td id="LC432" class="blob-code js-file-line">   the features.</td>
      </tr>
      <tr>
        <td id="L433" class="blob-num js-line-number" data-line-number="433"></td>
        <td id="LC433" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L434" class="blob-num js-line-number" data-line-number="434"></td>
        <td id="LC434" class="blob-code js-file-line">   The DCA mechanism must also support the scenario where the set of</td>
      </tr>
      <tr>
        <td id="L435" class="blob-num js-line-number" data-line-number="435"></td>
        <td id="LC435" class="blob-code js-file-line">   features supported by the sender of a request and by agents in the</td>
      </tr>
      <tr>
        <td id="L436" class="blob-num js-line-number" data-line-number="436"></td>
        <td id="LC436" class="blob-code js-file-line">   path of a request differ.  In this case, the agent updates the OC-</td>
      </tr>
      <tr>
        <td id="L437" class="blob-num js-line-number" data-line-number="437"></td>
        <td id="LC437" class="blob-code js-file-line">   Supported-Feature AVP to reflect the mixture of the two sets of</td>
      </tr>
      <tr>
        <td id="L438" class="blob-num js-line-number" data-line-number="438"></td>
        <td id="LC438" class="blob-code js-file-line">   supported features.</td>
      </tr>
      <tr>
        <td id="L439" class="blob-num js-line-number" data-line-number="439"></td>
        <td id="LC439" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L440" class="blob-num js-line-number" data-line-number="440"></td>
        <td id="LC440" class="blob-code js-file-line">      The logic to determine the content of the modified OC-Supported-</td>
      </tr>
      <tr>
        <td id="L441" class="blob-num js-line-number" data-line-number="441"></td>
        <td id="LC441" class="blob-code js-file-line">      Feature AVP is out-of-scope for this specification and is left to</td>
      </tr>
      <tr>
        <td id="L442" class="blob-num js-line-number" data-line-number="442"></td>
        <td id="LC442" class="blob-code js-file-line">      implementation decisions.  Care must be taken in doing so not to</td>
      </tr>
      <tr>
        <td id="L443" class="blob-num js-line-number" data-line-number="443"></td>
        <td id="LC443" class="blob-code js-file-line">      introduce interoperability issues for downstream or upstream DOIC</td>
      </tr>
      <tr>
        <td id="L444" class="blob-num js-line-number" data-line-number="444"></td>
        <td id="LC444" class="blob-code js-file-line">      nodes.</td>
      </tr>
      <tr>
        <td id="L445" class="blob-num js-line-number" data-line-number="445"></td>
        <td id="LC445" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L446" class="blob-num js-line-number" data-line-number="446"></td>
        <td id="LC446" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L447" class="blob-num js-line-number" data-line-number="447"></td>
        <td id="LC447" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L448" class="blob-num js-line-number" data-line-number="448"></td>
        <td id="LC448" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 8]</td>
      </tr>
      <tr>
        <td id="L449" class="blob-num js-line-number" data-line-number="449"></td>
        <td id="LC449" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L450" class="blob-num js-line-number" data-line-number="450"></td>
        <td id="LC450" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L451" class="blob-num js-line-number" data-line-number="451"></td>
        <td id="LC451" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L452" class="blob-num js-line-number" data-line-number="452"></td>
        <td id="LC452" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L453" class="blob-num js-line-number" data-line-number="453"></td>
        <td id="LC453" class="blob-code js-file-line">3.3.  DOIC Overload Condition Reporting (Non normative)</td>
      </tr>
      <tr>
        <td id="L454" class="blob-num js-line-number" data-line-number="454"></td>
        <td id="LC454" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L455" class="blob-num js-line-number" data-line-number="455"></td>
        <td id="LC455" class="blob-code js-file-line">   As with DOIC Capability Announcement, Overload Condition Reporting</td>
      </tr>
      <tr>
        <td id="L456" class="blob-num js-line-number" data-line-number="456"></td>
        <td id="LC456" class="blob-code js-file-line">   uses new AVPs (Section 6.3) to indicate an overload condition.</td>
      </tr>
      <tr>
        <td id="L457" class="blob-num js-line-number" data-line-number="457"></td>
        <td id="LC457" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L458" class="blob-num js-line-number" data-line-number="458"></td>
        <td id="LC458" class="blob-code js-file-line">   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L459" class="blob-num js-line-number" data-line-number="459"></td>
        <td id="LC459" class="blob-code js-file-line">   includes the type of report, an overload report ID, the length of</td>
      </tr>
      <tr>
        <td id="L460" class="blob-num js-line-number" data-line-number="460"></td>
        <td id="LC460" class="blob-code js-file-line">   time that the report is valid and abatement algorithm specific AVPs.</td>
      </tr>
      <tr>
        <td id="L461" class="blob-num js-line-number" data-line-number="461"></td>
        <td id="LC461" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L462" class="blob-num js-line-number" data-line-number="462"></td>
        <td id="LC462" class="blob-code js-file-line">   Two types of overload reports are defined in this document, host</td>
      </tr>
      <tr>
        <td id="L463" class="blob-num js-line-number" data-line-number="463"></td>
        <td id="LC463" class="blob-code js-file-line">   reports and realm reports.</td>
      </tr>
      <tr>
        <td id="L464" class="blob-num js-line-number" data-line-number="464"></td>
        <td id="LC464" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L465" class="blob-num js-line-number" data-line-number="465"></td>
        <td id="LC465" class="blob-code js-file-line">   Host reports apply to traffic that is sent to a specific Diameter</td>
      </tr>
      <tr>
        <td id="L466" class="blob-num js-line-number" data-line-number="466"></td>
        <td id="LC466" class="blob-code js-file-line">   host.  The applies to requests that contain the Destination-Host AVP</td>
      </tr>
      <tr>
        <td id="L467" class="blob-num js-line-number" data-line-number="467"></td>
        <td id="LC467" class="blob-code js-file-line">   that contains a DiameterIdentity that matches that of the overload</td>
      </tr>
      <tr>
        <td id="L468" class="blob-num js-line-number" data-line-number="468"></td>
        <td id="LC468" class="blob-code js-file-line">   report.  These requests are referred to as host-routed requests.  A</td>
      </tr>
      <tr>
        <td id="L469" class="blob-num js-line-number" data-line-number="469"></td>
        <td id="LC469" class="blob-code js-file-line">   host report also applies to realm-routed requests, requests that do</td>
      </tr>
      <tr>
        <td id="L470" class="blob-num js-line-number" data-line-number="470"></td>
        <td id="LC470" class="blob-code js-file-line">   not have a Destination-Host AVP, when the selected route for the</td>
      </tr>
      <tr>
        <td id="L471" class="blob-num js-line-number" data-line-number="471"></td>
        <td id="LC471" class="blob-code js-file-line">   request is a connection to the impacted host.</td>
      </tr>
      <tr>
        <td id="L472" class="blob-num js-line-number" data-line-number="472"></td>
        <td id="LC472" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L473" class="blob-num js-line-number" data-line-number="473"></td>
        <td id="LC473" class="blob-code js-file-line">   Realm reports apply to realm-routed requests for a specific realm as</td>
      </tr>
      <tr>
        <td id="L474" class="blob-num js-line-number" data-line-number="474"></td>
        <td id="LC474" class="blob-code js-file-line">   indicated in the Destination-Realm AVP.</td>
      </tr>
      <tr>
        <td id="L475" class="blob-num js-line-number" data-line-number="475"></td>
        <td id="LC475" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L476" class="blob-num js-line-number" data-line-number="476"></td>
        <td id="LC476" class="blob-code js-file-line">   Reporting nodes are responsible for determining the need for a</td>
      </tr>
      <tr>
        <td id="L477" class="blob-num js-line-number" data-line-number="477"></td>
        <td id="LC477" class="blob-code js-file-line">   reduction of traffic.  The method for making this determination is</td>
      </tr>
      <tr>
        <td id="L478" class="blob-num js-line-number" data-line-number="478"></td>
        <td id="LC478" class="blob-code js-file-line">   implementation specific and depend on the type of overload report</td>
      </tr>
      <tr>
        <td id="L479" class="blob-num js-line-number" data-line-number="479"></td>
        <td id="LC479" class="blob-code js-file-line">   being generated.  A host report, for instance, will generally be</td>
      </tr>
      <tr>
        <td id="L480" class="blob-num js-line-number" data-line-number="480"></td>
        <td id="LC480" class="blob-code js-file-line">   generated by tracking utilization of resources required by the host</td>
      </tr>
      <tr>
        <td id="L481" class="blob-num js-line-number" data-line-number="481"></td>
        <td id="LC481" class="blob-code js-file-line">   to handle transactions for the the Diameter application.  A realm</td>
      </tr>
      <tr>
        <td id="L482" class="blob-num js-line-number" data-line-number="482"></td>
        <td id="LC482" class="blob-code js-file-line">   report will generally impact the traffic sent to multiple hosts and,</td>
      </tr>
      <tr>
        <td id="L483" class="blob-num js-line-number" data-line-number="483"></td>
        <td id="LC483" class="blob-code js-file-line">   as such, will typically require tracking the capacity of the servers</td>
      </tr>
      <tr>
        <td id="L484" class="blob-num js-line-number" data-line-number="484"></td>
        <td id="LC484" class="blob-code js-file-line">   able to handle realm-routed requests for the application.</td>
      </tr>
      <tr>
        <td id="L485" class="blob-num js-line-number" data-line-number="485"></td>
        <td id="LC485" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L486" class="blob-num js-line-number" data-line-number="486"></td>
        <td id="LC486" class="blob-code js-file-line">   Once a reporting node determines the need for a reduction in traffic,</td>
      </tr>
      <tr>
        <td id="L487" class="blob-num js-line-number" data-line-number="487"></td>
        <td id="LC487" class="blob-code js-file-line">   it uses the DOIC defined AVPs to report on the condition.  These AVPs</td>
      </tr>
      <tr>
        <td id="L488" class="blob-num js-line-number" data-line-number="488"></td>
        <td id="LC488" class="blob-code js-file-line">   are included in answer messages sent or relayed by the reporting</td>
      </tr>
      <tr>
        <td id="L489" class="blob-num js-line-number" data-line-number="489"></td>
        <td id="LC489" class="blob-code js-file-line">   node.  The reporting node indicates the overload abatement algorithm</td>
      </tr>
      <tr>
        <td id="L490" class="blob-num js-line-number" data-line-number="490"></td>
        <td id="LC490" class="blob-code js-file-line">   that is to be used to handle the traffic reduction in the OC-</td>
      </tr>
      <tr>
        <td id="L491" class="blob-num js-line-number" data-line-number="491"></td>
        <td id="LC491" class="blob-code js-file-line">   Supported-Features AVP.  The OC-OLR AVP is used to communicate</td>
      </tr>
      <tr>
        <td id="L492" class="blob-num js-line-number" data-line-number="492"></td>
        <td id="LC492" class="blob-code js-file-line">   information about the requested reduction.</td>
      </tr>
      <tr>
        <td id="L493" class="blob-num js-line-number" data-line-number="493"></td>
        <td id="LC493" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L494" class="blob-num js-line-number" data-line-number="494"></td>
        <td id="LC494" class="blob-code js-file-line">   Reacting nodes, upon receipt of an overload report, are responsible</td>
      </tr>
      <tr>
        <td id="L495" class="blob-num js-line-number" data-line-number="495"></td>
        <td id="LC495" class="blob-code js-file-line">   for applying the abatement algorithm to traffic impacted by the</td>
      </tr>
      <tr>
        <td id="L496" class="blob-num js-line-number" data-line-number="496"></td>
        <td id="LC496" class="blob-code js-file-line">   overload report.  The method used for that abatement is dependent on</td>
      </tr>
      <tr>
        <td id="L497" class="blob-num js-line-number" data-line-number="497"></td>
        <td id="LC497" class="blob-code js-file-line">   the abatement algorithm.  The loss abatement algorithm is defined in</td>
      </tr>
      <tr>
        <td id="L498" class="blob-num js-line-number" data-line-number="498"></td>
        <td id="LC498" class="blob-code js-file-line">   this document (Section 5).  Other abatement algorithms can be defined</td>
      </tr>
      <tr>
        <td id="L499" class="blob-num js-line-number" data-line-number="499"></td>
        <td id="LC499" class="blob-code js-file-line">   in extensions to the DOIC solutions.</td>
      </tr>
      <tr>
        <td id="L500" class="blob-num js-line-number" data-line-number="500"></td>
        <td id="LC500" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L501" class="blob-num js-line-number" data-line-number="501"></td>
        <td id="LC501" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L502" class="blob-num js-line-number" data-line-number="502"></td>
        <td id="LC502" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L503" class="blob-num js-line-number" data-line-number="503"></td>
        <td id="LC503" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L504" class="blob-num js-line-number" data-line-number="504"></td>
        <td id="LC504" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                 [Page 9]</td>
      </tr>
      <tr>
        <td id="L505" class="blob-num js-line-number" data-line-number="505"></td>
        <td id="LC505" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L506" class="blob-num js-line-number" data-line-number="506"></td>
        <td id="LC506" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L507" class="blob-num js-line-number" data-line-number="507"></td>
        <td id="LC507" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L508" class="blob-num js-line-number" data-line-number="508"></td>
        <td id="LC508" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L509" class="blob-num js-line-number" data-line-number="509"></td>
        <td id="LC509" class="blob-code js-file-line">   As the conditions that lead to the generation of the overload report</td>
      </tr>
      <tr>
        <td id="L510" class="blob-num js-line-number" data-line-number="510"></td>
        <td id="LC510" class="blob-code js-file-line">   change the reporting node can send new overload reports requesting</td>
      </tr>
      <tr>
        <td id="L511" class="blob-num js-line-number" data-line-number="511"></td>
        <td id="LC511" class="blob-code js-file-line">   greater reduction if the condition gets worse or less reduction if</td>
      </tr>
      <tr>
        <td id="L512" class="blob-num js-line-number" data-line-number="512"></td>
        <td id="LC512" class="blob-code js-file-line">   the condition improves.  The reporting node sends an overload report</td>
      </tr>
      <tr>
        <td id="L513" class="blob-num js-line-number" data-line-number="513"></td>
        <td id="LC513" class="blob-code js-file-line">   with a duration of zero to indicate that the overlaod condition has</td>
      </tr>
      <tr>
        <td id="L514" class="blob-num js-line-number" data-line-number="514"></td>
        <td id="LC514" class="blob-code js-file-line">   ended and use of the abatement algorithm is no longer needed.</td>
      </tr>
      <tr>
        <td id="L515" class="blob-num js-line-number" data-line-number="515"></td>
        <td id="LC515" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L516" class="blob-num js-line-number" data-line-number="516"></td>
        <td id="LC516" class="blob-code js-file-line">   The reacting node also determines when the overload report expires</td>
      </tr>
      <tr>
        <td id="L517" class="blob-num js-line-number" data-line-number="517"></td>
        <td id="LC517" class="blob-code js-file-line">   based on the OC-Validaty-Duration AVP in the overload report and</td>
      </tr>
      <tr>
        <td id="L518" class="blob-num js-line-number" data-line-number="518"></td>
        <td id="LC518" class="blob-code js-file-line">   stops applying the abatement algorithm when the report expires.</td>
      </tr>
      <tr>
        <td id="L519" class="blob-num js-line-number" data-line-number="519"></td>
        <td id="LC519" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L520" class="blob-num js-line-number" data-line-number="520"></td>
        <td id="LC520" class="blob-code js-file-line">3.4.  DOIC Extensibility (Non normative)</td>
      </tr>
      <tr>
        <td id="L521" class="blob-num js-line-number" data-line-number="521"></td>
        <td id="LC521" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L522" class="blob-num js-line-number" data-line-number="522"></td>
        <td id="LC522" class="blob-code js-file-line">   The DOIC solutions is designed to be extensible.  This extensibility</td>
      </tr>
      <tr>
        <td id="L523" class="blob-num js-line-number" data-line-number="523"></td>
        <td id="LC523" class="blob-code js-file-line">   is based on existing Diameter based extensibility mechanisms.</td>
      </tr>
      <tr>
        <td id="L524" class="blob-num js-line-number" data-line-number="524"></td>
        <td id="LC524" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L525" class="blob-num js-line-number" data-line-number="525"></td>
        <td id="LC525" class="blob-code js-file-line">   There are multiple categories of extensions that are expected.  This</td>
      </tr>
      <tr>
        <td id="L526" class="blob-num js-line-number" data-line-number="526"></td>
        <td id="LC526" class="blob-code js-file-line">   includes the definition of new overload abatement algorithms, the</td>
      </tr>
      <tr>
        <td id="L527" class="blob-num js-line-number" data-line-number="527"></td>
        <td id="LC527" class="blob-code js-file-line">   definition of new report types and new definitions of the scope of</td>
      </tr>
      <tr>
        <td id="L528" class="blob-num js-line-number" data-line-number="528"></td>
        <td id="LC528" class="blob-code js-file-line">   messages impacted by an overload report.</td>
      </tr>
      <tr>
        <td id="L529" class="blob-num js-line-number" data-line-number="529"></td>
        <td id="LC529" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L530" class="blob-num js-line-number" data-line-number="530"></td>
        <td id="LC530" class="blob-code js-file-line">   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes</td>
      </tr>
      <tr>
        <td id="L531" class="blob-num js-line-number" data-line-number="531"></td>
        <td id="LC531" class="blob-code js-file-line">   to communicate supported features.  The specific features supported</td>
      </tr>
      <tr>
        <td id="L532" class="blob-num js-line-number" data-line-number="532"></td>
        <td id="LC532" class="blob-code js-file-line">   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC</td>
      </tr>
      <tr>
        <td id="L533" class="blob-num js-line-number" data-line-number="533"></td>
        <td id="LC533" class="blob-code js-file-line">   extensions must define new values for the OC-Feature-Vector AVP.</td>
      </tr>
      <tr>
        <td id="L534" class="blob-num js-line-number" data-line-number="534"></td>
        <td id="LC534" class="blob-code js-file-line">   DOIC extensions also have the ability to add new AVPs to the OC-</td>
      </tr>
      <tr>
        <td id="L535" class="blob-num js-line-number" data-line-number="535"></td>
        <td id="LC535" class="blob-code js-file-line">   Supported-Features AVP, if additional information about the new</td>
      </tr>
      <tr>
        <td id="L536" class="blob-num js-line-number" data-line-number="536"></td>
        <td id="LC536" class="blob-code js-file-line">   feature is required to be communicate.</td>
      </tr>
      <tr>
        <td id="L537" class="blob-num js-line-number" data-line-number="537"></td>
        <td id="LC537" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L538" class="blob-num js-line-number" data-line-number="538"></td>
        <td id="LC538" class="blob-code js-file-line">   Overload abatement algorithms use the OC-OLR AVP to communicate</td>
      </tr>
      <tr>
        <td id="L539" class="blob-num js-line-number" data-line-number="539"></td>
        <td id="LC539" class="blob-code js-file-line">   overload occurances.  This AVP can also be extended to add new AVPs</td>
      </tr>
      <tr>
        <td id="L540" class="blob-num js-line-number" data-line-number="540"></td>
        <td id="LC540" class="blob-code js-file-line">   allowing a reporting nodes to communicate additional information</td>
      </tr>
      <tr>
        <td id="L541" class="blob-num js-line-number" data-line-number="541"></td>
        <td id="LC541" class="blob-code js-file-line">   about handling an overload condition.</td>
      </tr>
      <tr>
        <td id="L542" class="blob-num js-line-number" data-line-number="542"></td>
        <td id="LC542" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L543" class="blob-num js-line-number" data-line-number="543"></td>
        <td id="LC543" class="blob-code js-file-line">   If necessary, new extensions can also define new top level AVPs.  It</td>
      </tr>
      <tr>
        <td id="L544" class="blob-num js-line-number" data-line-number="544"></td>
        <td id="LC544" class="blob-code js-file-line">   is, however, recommended that DOIC extensions use the OC-Supported-</td>
      </tr>
      <tr>
        <td id="L545" class="blob-num js-line-number" data-line-number="545"></td>
        <td id="LC545" class="blob-code js-file-line">   Features and OC-OLR to carry all DOIC related AVPs.</td>
      </tr>
      <tr>
        <td id="L546" class="blob-num js-line-number" data-line-number="546"></td>
        <td id="LC546" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L547" class="blob-num js-line-number" data-line-number="547"></td>
        <td id="LC547" class="blob-code js-file-line">3.5.  Simplified Example Architecture (Non normative)</td>
      </tr>
      <tr>
        <td id="L548" class="blob-num js-line-number" data-line-number="548"></td>
        <td id="LC548" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L549" class="blob-num js-line-number" data-line-number="549"></td>
        <td id="LC549" class="blob-code js-file-line">   Figure 1 illustrates the simplified architecture for Diameter</td>
      </tr>
      <tr>
        <td id="L550" class="blob-num js-line-number" data-line-number="550"></td>
        <td id="LC550" class="blob-code js-file-line">   overload information conveyance.</td>
      </tr>
      <tr>
        <td id="L551" class="blob-num js-line-number" data-line-number="551"></td>
        <td id="LC551" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L552" class="blob-num js-line-number" data-line-number="552"></td>
        <td id="LC552" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L553" class="blob-num js-line-number" data-line-number="553"></td>
        <td id="LC553" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L554" class="blob-num js-line-number" data-line-number="554"></td>
        <td id="LC554" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L555" class="blob-num js-line-number" data-line-number="555"></td>
        <td id="LC555" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L556" class="blob-num js-line-number" data-line-number="556"></td>
        <td id="LC556" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L557" class="blob-num js-line-number" data-line-number="557"></td>
        <td id="LC557" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L558" class="blob-num js-line-number" data-line-number="558"></td>
        <td id="LC558" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L559" class="blob-num js-line-number" data-line-number="559"></td>
        <td id="LC559" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L560" class="blob-num js-line-number" data-line-number="560"></td>
        <td id="LC560" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 10]</td>
      </tr>
      <tr>
        <td id="L561" class="blob-num js-line-number" data-line-number="561"></td>
        <td id="LC561" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L562" class="blob-num js-line-number" data-line-number="562"></td>
        <td id="LC562" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L563" class="blob-num js-line-number" data-line-number="563"></td>
        <td id="LC563" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L564" class="blob-num js-line-number" data-line-number="564"></td>
        <td id="LC564" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L565" class="blob-num js-line-number" data-line-number="565"></td>
        <td id="LC565" class="blob-code js-file-line">    Realm X                                  Same or other Realms</td>
      </tr>
      <tr>
        <td id="L566" class="blob-num js-line-number" data-line-number="566"></td>
        <td id="LC566" class="blob-code js-file-line">   &lt;--------------------------------------&gt; &lt;----------------------&gt;</td>
      </tr>
      <tr>
        <td id="L567" class="blob-num js-line-number" data-line-number="567"></td>
        <td id="LC567" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L568" class="blob-num js-line-number" data-line-number="568"></td>
        <td id="LC568" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L569" class="blob-num js-line-number" data-line-number="569"></td>
        <td id="LC569" class="blob-code js-file-line">      +--^-----+                 : (optional) :</td>
      </tr>
      <tr>
        <td id="L570" class="blob-num js-line-number" data-line-number="570"></td>
        <td id="LC570" class="blob-code js-file-line">      |Diameter|                 :            :</td>
      </tr>
      <tr>
        <td id="L571" class="blob-num js-line-number" data-line-number="571"></td>
        <td id="LC571" class="blob-code js-file-line">      |Server A|--+     .--.     : +---^----+ :     .--.</td>
      </tr>
      <tr>
        <td id="L572" class="blob-num js-line-number" data-line-number="572"></td>
        <td id="LC572" class="blob-code js-file-line">      +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+</td>
      </tr>
      <tr>
        <td id="L573" class="blob-num js-line-number" data-line-number="573"></td>
        <td id="LC573" class="blob-code js-file-line">                  +--(        )--:-|  Agent |-:--(        )--|Diameter|</td>
      </tr>
      <tr>
        <td id="L574" class="blob-num js-line-number" data-line-number="574"></td>
        <td id="LC574" class="blob-code js-file-line">      +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |</td>
      </tr>
      <tr>
        <td id="L575" class="blob-num js-line-number" data-line-number="575"></td>
        <td id="LC575" class="blob-code js-file-line">      |Diameter|--+  `--(___.-&#39;  :            :  `--(___.-&#39;  +-----^--+</td>
      </tr>
      <tr>
        <td id="L576" class="blob-num js-line-number" data-line-number="576"></td>
        <td id="LC576" class="blob-code js-file-line">      |Server B|                 :            :</td>
      </tr>
      <tr>
        <td id="L577" class="blob-num js-line-number" data-line-number="577"></td>
        <td id="LC577" class="blob-code js-file-line">      +---^----+                 :            :</td>
      </tr>
      <tr>
        <td id="L578" class="blob-num js-line-number" data-line-number="578"></td>
        <td id="LC578" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L579" class="blob-num js-line-number" data-line-number="579"></td>
        <td id="LC579" class="blob-code js-file-line">                          End-to-end Overload Indication</td>
      </tr>
      <tr>
        <td id="L580" class="blob-num js-line-number" data-line-number="580"></td>
        <td id="LC580" class="blob-code js-file-line">             1)  &lt;-----------------------------------------------&gt;</td>
      </tr>
      <tr>
        <td id="L581" class="blob-num js-line-number" data-line-number="581"></td>
        <td id="LC581" class="blob-code js-file-line">                             Diameter Application Y</td>
      </tr>
      <tr>
        <td id="L582" class="blob-num js-line-number" data-line-number="582"></td>
        <td id="LC582" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L583" class="blob-num js-line-number" data-line-number="583"></td>
        <td id="LC583" class="blob-code js-file-line">                  Overload Indication A    Overload Indication A&#39;</td>
      </tr>
      <tr>
        <td id="L584" class="blob-num js-line-number" data-line-number="584"></td>
        <td id="LC584" class="blob-code js-file-line">             2)  &lt;----------------------&gt; &lt;----------------------&gt;</td>
      </tr>
      <tr>
        <td id="L585" class="blob-num js-line-number" data-line-number="585"></td>
        <td id="LC585" class="blob-code js-file-line">                 standard base protocol   standard base protocol</td>
      </tr>
      <tr>
        <td id="L586" class="blob-num js-line-number" data-line-number="586"></td>
        <td id="LC586" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L587" class="blob-num js-line-number" data-line-number="587"></td>
        <td id="LC587" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L588" class="blob-num js-line-number" data-line-number="588"></td>
        <td id="LC588" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L589" class="blob-num js-line-number" data-line-number="589"></td>
        <td id="LC589" class="blob-code js-file-line">     Figure 1: Simplified architecture choices for overload indication</td>
      </tr>
      <tr>
        <td id="L590" class="blob-num js-line-number" data-line-number="590"></td>
        <td id="LC590" class="blob-code js-file-line">                                 delivery</td>
      </tr>
      <tr>
        <td id="L591" class="blob-num js-line-number" data-line-number="591"></td>
        <td id="LC591" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L592" class="blob-num js-line-number" data-line-number="592"></td>
        <td id="LC592" class="blob-code js-file-line">   In Figure 1, the Diameter overload indication can be conveyed (1)</td>
      </tr>
      <tr>
        <td id="L593" class="blob-num js-line-number" data-line-number="593"></td>
        <td id="LC593" class="blob-code js-file-line">   end-to-end between servers and clients or (2) between servers and</td>
      </tr>
      <tr>
        <td id="L594" class="blob-num js-line-number" data-line-number="594"></td>
        <td id="LC594" class="blob-code js-file-line">   Diameter agent inside the realm and then between the Diameter agent</td>
      </tr>
      <tr>
        <td id="L595" class="blob-num js-line-number" data-line-number="595"></td>
        <td id="LC595" class="blob-code js-file-line">   and the clients when the Diameter agent acting as back-to-back-agent</td>
      </tr>
      <tr>
        <td id="L596" class="blob-num js-line-number" data-line-number="596"></td>
        <td id="LC596" class="blob-code js-file-line">   for DOIC purposes.</td>
      </tr>
      <tr>
        <td id="L597" class="blob-num js-line-number" data-line-number="597"></td>
        <td id="LC597" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L598" class="blob-num js-line-number" data-line-number="598"></td>
        <td id="LC598" class="blob-code js-file-line">3.6.  Considerations for Applications Integrating the DOIC Solution (Non</td>
      </tr>
      <tr>
        <td id="L599" class="blob-num js-line-number" data-line-number="599"></td>
        <td id="LC599" class="blob-code js-file-line">      normative)</td>
      </tr>
      <tr>
        <td id="L600" class="blob-num js-line-number" data-line-number="600"></td>
        <td id="LC600" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L601" class="blob-num js-line-number" data-line-number="601"></td>
        <td id="LC601" class="blob-code js-file-line">   THis section outlines considerations to be taken into account when</td>
      </tr>
      <tr>
        <td id="L602" class="blob-num js-line-number" data-line-number="602"></td>
        <td id="LC602" class="blob-code js-file-line">   integrating the DOIC solution into Diameter applications.</td>
      </tr>
      <tr>
        <td id="L603" class="blob-num js-line-number" data-line-number="603"></td>
        <td id="LC603" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L604" class="blob-num js-line-number" data-line-number="604"></td>
        <td id="LC604" class="blob-code js-file-line">3.6.1.  Application Classification (Non normative)</td>
      </tr>
      <tr>
        <td id="L605" class="blob-num js-line-number" data-line-number="605"></td>
        <td id="LC605" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L606" class="blob-num js-line-number" data-line-number="606"></td>
        <td id="LC606" class="blob-code js-file-line">   The following is a classification of Diameter applications and</td>
      </tr>
      <tr>
        <td id="L607" class="blob-num js-line-number" data-line-number="607"></td>
        <td id="LC607" class="blob-code js-file-line">   requests.  This discussion is meant to document factors that play</td>
      </tr>
      <tr>
        <td id="L608" class="blob-num js-line-number" data-line-number="608"></td>
        <td id="LC608" class="blob-code js-file-line">   into decisions made by the Diameter identity responsible for handling</td>
      </tr>
      <tr>
        <td id="L609" class="blob-num js-line-number" data-line-number="609"></td>
        <td id="LC609" class="blob-code js-file-line">   overload reports.</td>
      </tr>
      <tr>
        <td id="L610" class="blob-num js-line-number" data-line-number="610"></td>
        <td id="LC610" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L611" class="blob-num js-line-number" data-line-number="611"></td>
        <td id="LC611" class="blob-code js-file-line">   Section 8.1 of [RFC6733] defines two state machines that imply two</td>
      </tr>
      <tr>
        <td id="L612" class="blob-num js-line-number" data-line-number="612"></td>
        <td id="LC612" class="blob-code js-file-line">   types of applications, session-less and session-based applications.</td>
      </tr>
      <tr>
        <td id="L613" class="blob-num js-line-number" data-line-number="613"></td>
        <td id="LC613" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L614" class="blob-num js-line-number" data-line-number="614"></td>
        <td id="LC614" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L615" class="blob-num js-line-number" data-line-number="615"></td>
        <td id="LC615" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L616" class="blob-num js-line-number" data-line-number="616"></td>
        <td id="LC616" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 11]</td>
      </tr>
      <tr>
        <td id="L617" class="blob-num js-line-number" data-line-number="617"></td>
        <td id="LC617" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L618" class="blob-num js-line-number" data-line-number="618"></td>
        <td id="LC618" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L619" class="blob-num js-line-number" data-line-number="619"></td>
        <td id="LC619" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L620" class="blob-num js-line-number" data-line-number="620"></td>
        <td id="LC620" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L621" class="blob-num js-line-number" data-line-number="621"></td>
        <td id="LC621" class="blob-code js-file-line">   The primary difference between these types of applications is the</td>
      </tr>
      <tr>
        <td id="L622" class="blob-num js-line-number" data-line-number="622"></td>
        <td id="LC622" class="blob-code js-file-line">   lifetime of Session-Ids.</td>
      </tr>
      <tr>
        <td id="L623" class="blob-num js-line-number" data-line-number="623"></td>
        <td id="LC623" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L624" class="blob-num js-line-number" data-line-number="624"></td>
        <td id="LC624" class="blob-code js-file-line">   For session-based applications, the Session-Id is used to tie</td>
      </tr>
      <tr>
        <td id="L625" class="blob-num js-line-number" data-line-number="625"></td>
        <td id="LC625" class="blob-code js-file-line">   multiple requests into a single session.</td>
      </tr>
      <tr>
        <td id="L626" class="blob-num js-line-number" data-line-number="626"></td>
        <td id="LC626" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L627" class="blob-num js-line-number" data-line-number="627"></td>
        <td id="LC627" class="blob-code js-file-line">   In session-less applications, the lifetime of the Session-Id is a</td>
      </tr>
      <tr>
        <td id="L628" class="blob-num js-line-number" data-line-number="628"></td>
        <td id="LC628" class="blob-code js-file-line">   single Diameter transaction, i.e. the session is implicitly</td>
      </tr>
      <tr>
        <td id="L629" class="blob-num js-line-number" data-line-number="629"></td>
        <td id="LC629" class="blob-code js-file-line">   terminated after a single Diameter transaction and a new Session-Id</td>
      </tr>
      <tr>
        <td id="L630" class="blob-num js-line-number" data-line-number="630"></td>
        <td id="LC630" class="blob-code js-file-line">   is generated for each Diameter request.</td>
      </tr>
      <tr>
        <td id="L631" class="blob-num js-line-number" data-line-number="631"></td>
        <td id="LC631" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L632" class="blob-num js-line-number" data-line-number="632"></td>
        <td id="LC632" class="blob-code js-file-line">   For the purposes of this discussion, session-less applications are</td>
      </tr>
      <tr>
        <td id="L633" class="blob-num js-line-number" data-line-number="633"></td>
        <td id="LC633" class="blob-code js-file-line">   further divided into two types of applications:</td>
      </tr>
      <tr>
        <td id="L634" class="blob-num js-line-number" data-line-number="634"></td>
        <td id="LC634" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L635" class="blob-num js-line-number" data-line-number="635"></td>
        <td id="LC635" class="blob-code js-file-line">   Stateless applications:</td>
      </tr>
      <tr>
        <td id="L636" class="blob-num js-line-number" data-line-number="636"></td>
        <td id="LC636" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L637" class="blob-num js-line-number" data-line-number="637"></td>
        <td id="LC637" class="blob-code js-file-line">      Requests within a stateless application have no relationship to</td>
      </tr>
      <tr>
        <td id="L638" class="blob-num js-line-number" data-line-number="638"></td>
        <td id="LC638" class="blob-code js-file-line">      each other.  The 3GPP defined S13 application is an example of a</td>
      </tr>
      <tr>
        <td id="L639" class="blob-num js-line-number" data-line-number="639"></td>
        <td id="LC639" class="blob-code js-file-line">      stateless application [S13], --&gt; where only a Diameter command is</td>
      </tr>
      <tr>
        <td id="L640" class="blob-num js-line-number" data-line-number="640"></td>
        <td id="LC640" class="blob-code js-file-line">      defined between a client and a server and no state is maintained</td>
      </tr>
      <tr>
        <td id="L641" class="blob-num js-line-number" data-line-number="641"></td>
        <td id="LC641" class="blob-code js-file-line">      between two consecutive transactions.</td>
      </tr>
      <tr>
        <td id="L642" class="blob-num js-line-number" data-line-number="642"></td>
        <td id="LC642" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L643" class="blob-num js-line-number" data-line-number="643"></td>
        <td id="LC643" class="blob-code js-file-line">   Pseudo-session applications:</td>
      </tr>
      <tr>
        <td id="L644" class="blob-num js-line-number" data-line-number="644"></td>
        <td id="LC644" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L645" class="blob-num js-line-number" data-line-number="645"></td>
        <td id="LC645" class="blob-code js-file-line">      Applications that do not rely on the Session-Id AVP for</td>
      </tr>
      <tr>
        <td id="L646" class="blob-num js-line-number" data-line-number="646"></td>
        <td id="LC646" class="blob-code js-file-line">      correlation of application messages related to the same session</td>
      </tr>
      <tr>
        <td id="L647" class="blob-num js-line-number" data-line-number="647"></td>
        <td id="LC647" class="blob-code js-file-line">      but use other session-related information in the Diameter requests</td>
      </tr>
      <tr>
        <td id="L648" class="blob-num js-line-number" data-line-number="648"></td>
        <td id="LC648" class="blob-code js-file-line">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td>
      </tr>
      <tr>
        <td id="L649" class="blob-num js-line-number" data-line-number="649"></td>
        <td id="LC649" class="blob-code js-file-line">      example of a pseudo-session application.</td>
      </tr>
      <tr>
        <td id="L650" class="blob-num js-line-number" data-line-number="650"></td>
        <td id="LC650" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L651" class="blob-num js-line-number" data-line-number="651"></td>
        <td id="LC651" class="blob-code js-file-line">   The Credit-Control application defined in [RFC4006] is an example of</td>
      </tr>
      <tr>
        <td id="L652" class="blob-num js-line-number" data-line-number="652"></td>
        <td id="LC652" class="blob-code js-file-line">   a Diameter session-based application.</td>
      </tr>
      <tr>
        <td id="L653" class="blob-num js-line-number" data-line-number="653"></td>
        <td id="LC653" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L654" class="blob-num js-line-number" data-line-number="654"></td>
        <td id="LC654" class="blob-code js-file-line">   The handling of overload reports must take the type of application</td>
      </tr>
      <tr>
        <td id="L655" class="blob-num js-line-number" data-line-number="655"></td>
        <td id="LC655" class="blob-code js-file-line">   into consideration, as discussed in Section 3.6.2.</td>
      </tr>
      <tr>
        <td id="L656" class="blob-num js-line-number" data-line-number="656"></td>
        <td id="LC656" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L657" class="blob-num js-line-number" data-line-number="657"></td>
        <td id="LC657" class="blob-code js-file-line">3.6.2.  Application Type Overload Implications (Non normative)</td>
      </tr>
      <tr>
        <td id="L658" class="blob-num js-line-number" data-line-number="658"></td>
        <td id="LC658" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L659" class="blob-num js-line-number" data-line-number="659"></td>
        <td id="LC659" class="blob-code js-file-line">   This section discusses considerations for mitigating overload</td>
      </tr>
      <tr>
        <td id="L660" class="blob-num js-line-number" data-line-number="660"></td>
        <td id="LC660" class="blob-code js-file-line">   reported by a Diameter entity.  This discussion focuses on the type</td>
      </tr>
      <tr>
        <td id="L661" class="blob-num js-line-number" data-line-number="661"></td>
        <td id="LC661" class="blob-code js-file-line">   of application.  Section 3.6.3 discusses considerations for handling</td>
      </tr>
      <tr>
        <td id="L662" class="blob-num js-line-number" data-line-number="662"></td>
        <td id="LC662" class="blob-code js-file-line">   various request types when the target server is known to be in an</td>
      </tr>
      <tr>
        <td id="L663" class="blob-num js-line-number" data-line-number="663"></td>
        <td id="LC663" class="blob-code js-file-line">   overloaded state.</td>
      </tr>
      <tr>
        <td id="L664" class="blob-num js-line-number" data-line-number="664"></td>
        <td id="LC664" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L665" class="blob-num js-line-number" data-line-number="665"></td>
        <td id="LC665" class="blob-code js-file-line">   These discussions assume that the strategy for mitigating the</td>
      </tr>
      <tr>
        <td id="L666" class="blob-num js-line-number" data-line-number="666"></td>
        <td id="LC666" class="blob-code js-file-line">   reported overload is to reduce the overall workload sent to the</td>
      </tr>
      <tr>
        <td id="L667" class="blob-num js-line-number" data-line-number="667"></td>
        <td id="LC667" class="blob-code js-file-line">   overloaded entity.  The concept of applying overload treatment to</td>
      </tr>
      <tr>
        <td id="L668" class="blob-num js-line-number" data-line-number="668"></td>
        <td id="LC668" class="blob-code js-file-line">   requests targeted for an overloaded Diameter entity is inherent to</td>
      </tr>
      <tr>
        <td id="L669" class="blob-num js-line-number" data-line-number="669"></td>
        <td id="LC669" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L670" class="blob-num js-line-number" data-line-number="670"></td>
        <td id="LC670" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L671" class="blob-num js-line-number" data-line-number="671"></td>
        <td id="LC671" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L672" class="blob-num js-line-number" data-line-number="672"></td>
        <td id="LC672" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 12]</td>
      </tr>
      <tr>
        <td id="L673" class="blob-num js-line-number" data-line-number="673"></td>
        <td id="LC673" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L674" class="blob-num js-line-number" data-line-number="674"></td>
        <td id="LC674" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L675" class="blob-num js-line-number" data-line-number="675"></td>
        <td id="LC675" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L676" class="blob-num js-line-number" data-line-number="676"></td>
        <td id="LC676" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L677" class="blob-num js-line-number" data-line-number="677"></td>
        <td id="LC677" class="blob-code js-file-line">   this discussion.  The method used to reduce offered load is not</td>
      </tr>
      <tr>
        <td id="L678" class="blob-num js-line-number" data-line-number="678"></td>
        <td id="LC678" class="blob-code js-file-line">   specified here but could include routing requests to another Diameter</td>
      </tr>
      <tr>
        <td id="L679" class="blob-num js-line-number" data-line-number="679"></td>
        <td id="LC679" class="blob-code js-file-line">   entity known to be able to handle them, or it could mean rejecting</td>
      </tr>
      <tr>
        <td id="L680" class="blob-num js-line-number" data-line-number="680"></td>
        <td id="LC680" class="blob-code js-file-line">   certain requests.  For a Diameter agent, rejecting requests will</td>
      </tr>
      <tr>
        <td id="L681" class="blob-num js-line-number" data-line-number="681"></td>
        <td id="LC681" class="blob-code js-file-line">   usually mean generating appropriate Diameter error responses.  For a</td>
      </tr>
      <tr>
        <td id="L682" class="blob-num js-line-number" data-line-number="682"></td>
        <td id="LC682" class="blob-code js-file-line">   Diameter client, rejecting requests will depend upon the application.</td>
      </tr>
      <tr>
        <td id="L683" class="blob-num js-line-number" data-line-number="683"></td>
        <td id="LC683" class="blob-code js-file-line">   For example, it could mean giving an indication to the entity</td>
      </tr>
      <tr>
        <td id="L684" class="blob-num js-line-number" data-line-number="684"></td>
        <td id="LC684" class="blob-code js-file-line">   requesting the Diameter service that the network is busy and to try</td>
      </tr>
      <tr>
        <td id="L685" class="blob-num js-line-number" data-line-number="685"></td>
        <td id="LC685" class="blob-code js-file-line">   again later.</td>
      </tr>
      <tr>
        <td id="L686" class="blob-num js-line-number" data-line-number="686"></td>
        <td id="LC686" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L687" class="blob-num js-line-number" data-line-number="687"></td>
        <td id="LC687" class="blob-code js-file-line">   Stateless applications:</td>
      </tr>
      <tr>
        <td id="L688" class="blob-num js-line-number" data-line-number="688"></td>
        <td id="LC688" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L689" class="blob-num js-line-number" data-line-number="689"></td>
        <td id="LC689" class="blob-code js-file-line">      By definition there is no relationship between individual requests</td>
      </tr>
      <tr>
        <td id="L690" class="blob-num js-line-number" data-line-number="690"></td>
        <td id="LC690" class="blob-code js-file-line">      in a stateless application.  As a result, when a request is sent</td>
      </tr>
      <tr>
        <td id="L691" class="blob-num js-line-number" data-line-number="691"></td>
        <td id="LC691" class="blob-code js-file-line">      or relayed to an overloaded Diameter entity - either a Diameter</td>
      </tr>
      <tr>
        <td id="L692" class="blob-num js-line-number" data-line-number="692"></td>
        <td id="LC692" class="blob-code js-file-line">      Server or a Diameter Agent - the sending or relaying entity can</td>
      </tr>
      <tr>
        <td id="L693" class="blob-num js-line-number" data-line-number="693"></td>
        <td id="LC693" class="blob-code js-file-line">      choose to apply the overload treatment to any request targeted for</td>
      </tr>
      <tr>
        <td id="L694" class="blob-num js-line-number" data-line-number="694"></td>
        <td id="LC694" class="blob-code js-file-line">      the overloaded entity.</td>
      </tr>
      <tr>
        <td id="L695" class="blob-num js-line-number" data-line-number="695"></td>
        <td id="LC695" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L696" class="blob-num js-line-number" data-line-number="696"></td>
        <td id="LC696" class="blob-code js-file-line">   Pseudo-session applications:</td>
      </tr>
      <tr>
        <td id="L697" class="blob-num js-line-number" data-line-number="697"></td>
        <td id="LC697" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L698" class="blob-num js-line-number" data-line-number="698"></td>
        <td id="LC698" class="blob-code js-file-line">      For pseudo-session applications, there is an implied ordering of</td>
      </tr>
      <tr>
        <td id="L699" class="blob-num js-line-number" data-line-number="699"></td>
        <td id="LC699" class="blob-code js-file-line">      requests.  As a result, decisions about which requests towards an</td>
      </tr>
      <tr>
        <td id="L700" class="blob-num js-line-number" data-line-number="700"></td>
        <td id="LC700" class="blob-code js-file-line">      overloaded entity to reject could take the command code of the</td>
      </tr>
      <tr>
        <td id="L701" class="blob-num js-line-number" data-line-number="701"></td>
        <td id="LC701" class="blob-code js-file-line">      request into consideration.  This generally means that</td>
      </tr>
      <tr>
        <td id="L702" class="blob-num js-line-number" data-line-number="702"></td>
        <td id="LC702" class="blob-code js-file-line">      transactions later in the sequence of transactions should be given</td>
      </tr>
      <tr>
        <td id="L703" class="blob-num js-line-number" data-line-number="703"></td>
        <td id="LC703" class="blob-code js-file-line">      more favorable treatment than messages earlier in the sequence.</td>
      </tr>
      <tr>
        <td id="L704" class="blob-num js-line-number" data-line-number="704"></td>
        <td id="LC704" class="blob-code js-file-line">      This is because more work has already been done by the Diameter</td>
      </tr>
      <tr>
        <td id="L705" class="blob-num js-line-number" data-line-number="705"></td>
        <td id="LC705" class="blob-code js-file-line">      network for those transactions that occur later in the sequence.</td>
      </tr>
      <tr>
        <td id="L706" class="blob-num js-line-number" data-line-number="706"></td>
        <td id="LC706" class="blob-code js-file-line">      Rejecting them could result in increasing the load on the network</td>
      </tr>
      <tr>
        <td id="L707" class="blob-num js-line-number" data-line-number="707"></td>
        <td id="LC707" class="blob-code js-file-line">      as the transactions earlier in the sequence might also need to be</td>
      </tr>
      <tr>
        <td id="L708" class="blob-num js-line-number" data-line-number="708"></td>
        <td id="LC708" class="blob-code js-file-line">      repeated.</td>
      </tr>
      <tr>
        <td id="L709" class="blob-num js-line-number" data-line-number="709"></td>
        <td id="LC709" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L710" class="blob-num js-line-number" data-line-number="710"></td>
        <td id="LC710" class="blob-code js-file-line">   Session-based applications:</td>
      </tr>
      <tr>
        <td id="L711" class="blob-num js-line-number" data-line-number="711"></td>
        <td id="LC711" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L712" class="blob-num js-line-number" data-line-number="712"></td>
        <td id="LC712" class="blob-code js-file-line">      Overload handling for session-based applications must take into</td>
      </tr>
      <tr>
        <td id="L713" class="blob-num js-line-number" data-line-number="713"></td>
        <td id="LC713" class="blob-code js-file-line">      consideration the work load associated with setting up and</td>
      </tr>
      <tr>
        <td id="L714" class="blob-num js-line-number" data-line-number="714"></td>
        <td id="LC714" class="blob-code js-file-line">      maintaining a session.  As such, the entity sending requests</td>
      </tr>
      <tr>
        <td id="L715" class="blob-num js-line-number" data-line-number="715"></td>
        <td id="LC715" class="blob-code js-file-line">      towards an overloaded Diameter entity for a session-based</td>
      </tr>
      <tr>
        <td id="L716" class="blob-num js-line-number" data-line-number="716"></td>
        <td id="LC716" class="blob-code js-file-line">      application might tend to reject new session requests prior to</td>
      </tr>
      <tr>
        <td id="L717" class="blob-num js-line-number" data-line-number="717"></td>
        <td id="LC717" class="blob-code js-file-line">      rejecting intra-session requests.  In addition, session ending</td>
      </tr>
      <tr>
        <td id="L718" class="blob-num js-line-number" data-line-number="718"></td>
        <td id="LC718" class="blob-code js-file-line">      requests might be given a lower probability of being rejected as</td>
      </tr>
      <tr>
        <td id="L719" class="blob-num js-line-number" data-line-number="719"></td>
        <td id="LC719" class="blob-code js-file-line">      rejecting session ending requests could result in session status</td>
      </tr>
      <tr>
        <td id="L720" class="blob-num js-line-number" data-line-number="720"></td>
        <td id="LC720" class="blob-code js-file-line">      being out of sync between the Diameter clients and servers.</td>
      </tr>
      <tr>
        <td id="L721" class="blob-num js-line-number" data-line-number="721"></td>
        <td id="LC721" class="blob-code js-file-line">      Application designers that would decide to reject mid-session</td>
      </tr>
      <tr>
        <td id="L722" class="blob-num js-line-number" data-line-number="722"></td>
        <td id="LC722" class="blob-code js-file-line">      requests will need to consider whether the rejection invalidates</td>
      </tr>
      <tr>
        <td id="L723" class="blob-num js-line-number" data-line-number="723"></td>
        <td id="LC723" class="blob-code js-file-line">      the session and any resulting session clean-up procedures.</td>
      </tr>
      <tr>
        <td id="L724" class="blob-num js-line-number" data-line-number="724"></td>
        <td id="LC724" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L725" class="blob-num js-line-number" data-line-number="725"></td>
        <td id="LC725" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L726" class="blob-num js-line-number" data-line-number="726"></td>
        <td id="LC726" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L727" class="blob-num js-line-number" data-line-number="727"></td>
        <td id="LC727" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L728" class="blob-num js-line-number" data-line-number="728"></td>
        <td id="LC728" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 13]</td>
      </tr>
      <tr>
        <td id="L729" class="blob-num js-line-number" data-line-number="729"></td>
        <td id="LC729" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L730" class="blob-num js-line-number" data-line-number="730"></td>
        <td id="LC730" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L731" class="blob-num js-line-number" data-line-number="731"></td>
        <td id="LC731" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L732" class="blob-num js-line-number" data-line-number="732"></td>
        <td id="LC732" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L733" class="blob-num js-line-number" data-line-number="733"></td>
        <td id="LC733" class="blob-code js-file-line">3.6.3.  Request Transaction Classification (Non normative)</td>
      </tr>
      <tr>
        <td id="L734" class="blob-num js-line-number" data-line-number="734"></td>
        <td id="LC734" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L735" class="blob-num js-line-number" data-line-number="735"></td>
        <td id="LC735" class="blob-code js-file-line">   Independent Request:</td>
      </tr>
      <tr>
        <td id="L736" class="blob-num js-line-number" data-line-number="736"></td>
        <td id="LC736" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L737" class="blob-num js-line-number" data-line-number="737"></td>
        <td id="LC737" class="blob-code js-file-line">      An independent request is not correlated to any other requests</td>
      </tr>
      <tr>
        <td id="L738" class="blob-num js-line-number" data-line-number="738"></td>
        <td id="LC738" class="blob-code js-file-line">      and, as such, the lifetime of the session-id is constrained to an</td>
      </tr>
      <tr>
        <td id="L739" class="blob-num js-line-number" data-line-number="739"></td>
        <td id="LC739" class="blob-code js-file-line">      individual transaction.</td>
      </tr>
      <tr>
        <td id="L740" class="blob-num js-line-number" data-line-number="740"></td>
        <td id="LC740" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L741" class="blob-num js-line-number" data-line-number="741"></td>
        <td id="LC741" class="blob-code js-file-line">   Session-Initiating Request:</td>
      </tr>
      <tr>
        <td id="L742" class="blob-num js-line-number" data-line-number="742"></td>
        <td id="LC742" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L743" class="blob-num js-line-number" data-line-number="743"></td>
        <td id="LC743" class="blob-code js-file-line">      A session-initiating request is the initial message that</td>
      </tr>
      <tr>
        <td id="L744" class="blob-num js-line-number" data-line-number="744"></td>
        <td id="LC744" class="blob-code js-file-line">      establishes a Diameter session.  The ACR message defined in</td>
      </tr>
      <tr>
        <td id="L745" class="blob-num js-line-number" data-line-number="745"></td>
        <td id="LC745" class="blob-code js-file-line">      [RFC6733] is an example of a session-initiating request.</td>
      </tr>
      <tr>
        <td id="L746" class="blob-num js-line-number" data-line-number="746"></td>
        <td id="LC746" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L747" class="blob-num js-line-number" data-line-number="747"></td>
        <td id="LC747" class="blob-code js-file-line">   Correlated Session-Initiating Request:</td>
      </tr>
      <tr>
        <td id="L748" class="blob-num js-line-number" data-line-number="748"></td>
        <td id="LC748" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L749" class="blob-num js-line-number" data-line-number="749"></td>
        <td id="LC749" class="blob-code js-file-line">      There are cases when multiple session-initiated requests must be</td>
      </tr>
      <tr>
        <td id="L750" class="blob-num js-line-number" data-line-number="750"></td>
        <td id="LC750" class="blob-code js-file-line">      correlated and managed by the same Diameter server.  It is notably</td>
      </tr>
      <tr>
        <td id="L751" class="blob-num js-line-number" data-line-number="751"></td>
        <td id="LC751" class="blob-code js-file-line">      the case in the 3GPP PCC architecture [PCC], where multiple</td>
      </tr>
      <tr>
        <td id="L752" class="blob-num js-line-number" data-line-number="752"></td>
        <td id="LC752" class="blob-code js-file-line">      apparently independent Diameter application sessions are actually</td>
      </tr>
      <tr>
        <td id="L753" class="blob-num js-line-number" data-line-number="753"></td>
        <td id="LC753" class="blob-code js-file-line">      correlated and must be handled by the same Diameter server.</td>
      </tr>
      <tr>
        <td id="L754" class="blob-num js-line-number" data-line-number="754"></td>
        <td id="LC754" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L755" class="blob-num js-line-number" data-line-number="755"></td>
        <td id="LC755" class="blob-code js-file-line">   Intra-Session Request:</td>
      </tr>
      <tr>
        <td id="L756" class="blob-num js-line-number" data-line-number="756"></td>
        <td id="LC756" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L757" class="blob-num js-line-number" data-line-number="757"></td>
        <td id="LC757" class="blob-code js-file-line">      An intra session request is a request that uses the same Session-</td>
      </tr>
      <tr>
        <td id="L758" class="blob-num js-line-number" data-line-number="758"></td>
        <td id="LC758" class="blob-code js-file-line">      Id than the one used in a previous request.  An intra session</td>
      </tr>
      <tr>
        <td id="L759" class="blob-num js-line-number" data-line-number="759"></td>
        <td id="LC759" class="blob-code js-file-line">      request generally needs to be delivered to the server that handled</td>
      </tr>
      <tr>
        <td id="L760" class="blob-num js-line-number" data-line-number="760"></td>
        <td id="LC760" class="blob-code js-file-line">      the session creating request for the session.  The STR message</td>
      </tr>
      <tr>
        <td id="L761" class="blob-num js-line-number" data-line-number="761"></td>
        <td id="LC761" class="blob-code js-file-line">      defined in [RFC6733] is an example of an intra-session requests.</td>
      </tr>
      <tr>
        <td id="L762" class="blob-num js-line-number" data-line-number="762"></td>
        <td id="LC762" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L763" class="blob-num js-line-number" data-line-number="763"></td>
        <td id="LC763" class="blob-code js-file-line">   Pseudo-Session Requests:</td>
      </tr>
      <tr>
        <td id="L764" class="blob-num js-line-number" data-line-number="764"></td>
        <td id="LC764" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L765" class="blob-num js-line-number" data-line-number="765"></td>
        <td id="LC765" class="blob-code js-file-line">      Pseudo-session requests are independent requests and do not use</td>
      </tr>
      <tr>
        <td id="L766" class="blob-num js-line-number" data-line-number="766"></td>
        <td id="LC766" class="blob-code js-file-line">      the same Session-Id but are correlated by other session-related</td>
      </tr>
      <tr>
        <td id="L767" class="blob-num js-line-number" data-line-number="767"></td>
        <td id="LC767" class="blob-code js-file-line">      information contained in the request.  There exists Diameter</td>
      </tr>
      <tr>
        <td id="L768" class="blob-num js-line-number" data-line-number="768"></td>
        <td id="LC768" class="blob-code js-file-line">      applications that define an expected ordering of transactions.</td>
      </tr>
      <tr>
        <td id="L769" class="blob-num js-line-number" data-line-number="769"></td>
        <td id="LC769" class="blob-code js-file-line">      This sequencing of independent transactions results in a pseudo</td>
      </tr>
      <tr>
        <td id="L770" class="blob-num js-line-number" data-line-number="770"></td>
        <td id="LC770" class="blob-code js-file-line">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</td>
      </tr>
      <tr>
        <td id="L771" class="blob-num js-line-number" data-line-number="771"></td>
        <td id="LC771" class="blob-code js-file-line">      [Cx] application are examples of pseudo-session requests.</td>
      </tr>
      <tr>
        <td id="L772" class="blob-num js-line-number" data-line-number="772"></td>
        <td id="LC772" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L773" class="blob-num js-line-number" data-line-number="773"></td>
        <td id="LC773" class="blob-code js-file-line">3.6.4.  Request Type Overload Implications (Non normative)</td>
      </tr>
      <tr>
        <td id="L774" class="blob-num js-line-number" data-line-number="774"></td>
        <td id="LC774" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L775" class="blob-num js-line-number" data-line-number="775"></td>
        <td id="LC775" class="blob-code js-file-line">   The request classes identified in Section 3.6.3 have implications on</td>
      </tr>
      <tr>
        <td id="L776" class="blob-num js-line-number" data-line-number="776"></td>
        <td id="LC776" class="blob-code js-file-line">   decisions about which requests should be throttled first.  The</td>
      </tr>
      <tr>
        <td id="L777" class="blob-num js-line-number" data-line-number="777"></td>
        <td id="LC777" class="blob-code js-file-line">   following list of request treatment regarding throttling is provided</td>
      </tr>
      <tr>
        <td id="L778" class="blob-num js-line-number" data-line-number="778"></td>
        <td id="LC778" class="blob-code js-file-line">   as guidelines for application designers when implementing the</td>
      </tr>
      <tr>
        <td id="L779" class="blob-num js-line-number" data-line-number="779"></td>
        <td id="LC779" class="blob-code js-file-line">   Diameter overload control mechanism described in this document.  The</td>
      </tr>
      <tr>
        <td id="L780" class="blob-num js-line-number" data-line-number="780"></td>
        <td id="LC780" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L781" class="blob-num js-line-number" data-line-number="781"></td>
        <td id="LC781" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L782" class="blob-num js-line-number" data-line-number="782"></td>
        <td id="LC782" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L783" class="blob-num js-line-number" data-line-number="783"></td>
        <td id="LC783" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L784" class="blob-num js-line-number" data-line-number="784"></td>
        <td id="LC784" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 14]</td>
      </tr>
      <tr>
        <td id="L785" class="blob-num js-line-number" data-line-number="785"></td>
        <td id="LC785" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L786" class="blob-num js-line-number" data-line-number="786"></td>
        <td id="LC786" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L787" class="blob-num js-line-number" data-line-number="787"></td>
        <td id="LC787" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L788" class="blob-num js-line-number" data-line-number="788"></td>
        <td id="LC788" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L789" class="blob-num js-line-number" data-line-number="789"></td>
        <td id="LC789" class="blob-code js-file-line">   exact behavior regarding throttling is a matter of local policy,</td>
      </tr>
      <tr>
        <td id="L790" class="blob-num js-line-number" data-line-number="790"></td>
        <td id="LC790" class="blob-code js-file-line">   unless specifically defined for the application.</td>
      </tr>
      <tr>
        <td id="L791" class="blob-num js-line-number" data-line-number="791"></td>
        <td id="LC791" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L792" class="blob-num js-line-number" data-line-number="792"></td>
        <td id="LC792" class="blob-code js-file-line">   Independent requests:</td>
      </tr>
      <tr>
        <td id="L793" class="blob-num js-line-number" data-line-number="793"></td>
        <td id="LC793" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L794" class="blob-num js-line-number" data-line-number="794"></td>
        <td id="LC794" class="blob-code js-file-line">      Independent requests can be given equal treatment when making</td>
      </tr>
      <tr>
        <td id="L795" class="blob-num js-line-number" data-line-number="795"></td>
        <td id="LC795" class="blob-code js-file-line">      throttling decisions.</td>
      </tr>
      <tr>
        <td id="L796" class="blob-num js-line-number" data-line-number="796"></td>
        <td id="LC796" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L797" class="blob-num js-line-number" data-line-number="797"></td>
        <td id="LC797" class="blob-code js-file-line">   Session-initiating requests:</td>
      </tr>
      <tr>
        <td id="L798" class="blob-num js-line-number" data-line-number="798"></td>
        <td id="LC798" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L799" class="blob-num js-line-number" data-line-number="799"></td>
        <td id="LC799" class="blob-code js-file-line">      Session-initiating requests represent more work than independent</td>
      </tr>
      <tr>
        <td id="L800" class="blob-num js-line-number" data-line-number="800"></td>
        <td id="LC800" class="blob-code js-file-line">      or intra-session requests.  Moreover, session-initiating requests</td>
      </tr>
      <tr>
        <td id="L801" class="blob-num js-line-number" data-line-number="801"></td>
        <td id="LC801" class="blob-code js-file-line">      are typically followed by other session-related requests.  As</td>
      </tr>
      <tr>
        <td id="L802" class="blob-num js-line-number" data-line-number="802"></td>
        <td id="LC802" class="blob-code js-file-line">      such, as the main objective of the overload control is to reduce</td>
      </tr>
      <tr>
        <td id="L803" class="blob-num js-line-number" data-line-number="803"></td>
        <td id="LC803" class="blob-code js-file-line">      the total number of requests sent to the overloaded entity,</td>
      </tr>
      <tr>
        <td id="L804" class="blob-num js-line-number" data-line-number="804"></td>
        <td id="LC804" class="blob-code js-file-line">      throttling decisions might favor allowing intra-session requests</td>
      </tr>
      <tr>
        <td id="L805" class="blob-num js-line-number" data-line-number="805"></td>
        <td id="LC805" class="blob-code js-file-line">      over session-initiating requests.  Individual session-initiating</td>
      </tr>
      <tr>
        <td id="L806" class="blob-num js-line-number" data-line-number="806"></td>
        <td id="LC806" class="blob-code js-file-line">      requests can be given equal treatment when making throttling</td>
      </tr>
      <tr>
        <td id="L807" class="blob-num js-line-number" data-line-number="807"></td>
        <td id="LC807" class="blob-code js-file-line">      decisions.</td>
      </tr>
      <tr>
        <td id="L808" class="blob-num js-line-number" data-line-number="808"></td>
        <td id="LC808" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L809" class="blob-num js-line-number" data-line-number="809"></td>
        <td id="LC809" class="blob-code js-file-line">   Correlated session-initiating requests:</td>
      </tr>
      <tr>
        <td id="L810" class="blob-num js-line-number" data-line-number="810"></td>
        <td id="LC810" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L811" class="blob-num js-line-number" data-line-number="811"></td>
        <td id="LC811" class="blob-code js-file-line">      A Request that results in a new binding, where the binding is used</td>
      </tr>
      <tr>
        <td id="L812" class="blob-num js-line-number" data-line-number="812"></td>
        <td id="LC812" class="blob-code js-file-line">      for routing of subsequent session-initiating requests to the same</td>
      </tr>
      <tr>
        <td id="L813" class="blob-num js-line-number" data-line-number="813"></td>
        <td id="LC813" class="blob-code js-file-line">      server, represents more work load than other requests.  As such,</td>
      </tr>
      <tr>
        <td id="L814" class="blob-num js-line-number" data-line-number="814"></td>
        <td id="LC814" class="blob-code js-file-line">      these requests might be throttled more frequently than other</td>
      </tr>
      <tr>
        <td id="L815" class="blob-num js-line-number" data-line-number="815"></td>
        <td id="LC815" class="blob-code js-file-line">      request types.</td>
      </tr>
      <tr>
        <td id="L816" class="blob-num js-line-number" data-line-number="816"></td>
        <td id="LC816" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L817" class="blob-num js-line-number" data-line-number="817"></td>
        <td id="LC817" class="blob-code js-file-line">   Pseudo-session requests:</td>
      </tr>
      <tr>
        <td id="L818" class="blob-num js-line-number" data-line-number="818"></td>
        <td id="LC818" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L819" class="blob-num js-line-number" data-line-number="819"></td>
        <td id="LC819" class="blob-code js-file-line">      Throttling decisions for pseudo-session requests can take into</td>
      </tr>
      <tr>
        <td id="L820" class="blob-num js-line-number" data-line-number="820"></td>
        <td id="LC820" class="blob-code js-file-line">      consideration where individual requests fit into the overall</td>
      </tr>
      <tr>
        <td id="L821" class="blob-num js-line-number" data-line-number="821"></td>
        <td id="LC821" class="blob-code js-file-line">      sequence of requests within the pseudo session.  Requests that are</td>
      </tr>
      <tr>
        <td id="L822" class="blob-num js-line-number" data-line-number="822"></td>
        <td id="LC822" class="blob-code js-file-line">      earlier in the sequence might be throttled more aggressively than</td>
      </tr>
      <tr>
        <td id="L823" class="blob-num js-line-number" data-line-number="823"></td>
        <td id="LC823" class="blob-code js-file-line">      requests that occur later in the sequence.</td>
      </tr>
      <tr>
        <td id="L824" class="blob-num js-line-number" data-line-number="824"></td>
        <td id="LC824" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L825" class="blob-num js-line-number" data-line-number="825"></td>
        <td id="LC825" class="blob-code js-file-line">   Intra-session requests</td>
      </tr>
      <tr>
        <td id="L826" class="blob-num js-line-number" data-line-number="826"></td>
        <td id="LC826" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L827" class="blob-num js-line-number" data-line-number="827"></td>
        <td id="LC827" class="blob-code js-file-line">      There are two classes of intra-sessions requests.  The first class</td>
      </tr>
      <tr>
        <td id="L828" class="blob-num js-line-number" data-line-number="828"></td>
        <td id="LC828" class="blob-code js-file-line">      consists of requests that terminate a session.  The second one</td>
      </tr>
      <tr>
        <td id="L829" class="blob-num js-line-number" data-line-number="829"></td>
        <td id="LC829" class="blob-code js-file-line">      contains the set of requests that are used by the Diameter client</td>
      </tr>
      <tr>
        <td id="L830" class="blob-num js-line-number" data-line-number="830"></td>
        <td id="LC830" class="blob-code js-file-line">      and server to maintain the ongoing session state.  Session</td>
      </tr>
      <tr>
        <td id="L831" class="blob-num js-line-number" data-line-number="831"></td>
        <td id="LC831" class="blob-code js-file-line">      terminating requests should be throttled less aggressively in</td>
      </tr>
      <tr>
        <td id="L832" class="blob-num js-line-number" data-line-number="832"></td>
        <td id="LC832" class="blob-code js-file-line">      order to gracefully terminate sessions, allow clean-up of the</td>
      </tr>
      <tr>
        <td id="L833" class="blob-num js-line-number" data-line-number="833"></td>
        <td id="LC833" class="blob-code js-file-line">      related resources (e.g. session state) and get rid of the need for</td>
      </tr>
      <tr>
        <td id="L834" class="blob-num js-line-number" data-line-number="834"></td>
        <td id="LC834" class="blob-code js-file-line">      other intra-session requests, reducing the session management</td>
      </tr>
      <tr>
        <td id="L835" class="blob-num js-line-number" data-line-number="835"></td>
        <td id="LC835" class="blob-code js-file-line">      impact on the overloaded entity.  The default handling of other</td>
      </tr>
      <tr>
        <td id="L836" class="blob-num js-line-number" data-line-number="836"></td>
        <td id="LC836" class="blob-code js-file-line">      intra-session requests might be to treat them equally when making</td>
      </tr>
      <tr>
        <td id="L837" class="blob-num js-line-number" data-line-number="837"></td>
        <td id="LC837" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L838" class="blob-num js-line-number" data-line-number="838"></td>
        <td id="LC838" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L839" class="blob-num js-line-number" data-line-number="839"></td>
        <td id="LC839" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L840" class="blob-num js-line-number" data-line-number="840"></td>
        <td id="LC840" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 15]</td>
      </tr>
      <tr>
        <td id="L841" class="blob-num js-line-number" data-line-number="841"></td>
        <td id="LC841" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L842" class="blob-num js-line-number" data-line-number="842"></td>
        <td id="LC842" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L843" class="blob-num js-line-number" data-line-number="843"></td>
        <td id="LC843" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L844" class="blob-num js-line-number" data-line-number="844"></td>
        <td id="LC844" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L845" class="blob-num js-line-number" data-line-number="845"></td>
        <td id="LC845" class="blob-code js-file-line">      throttling decisions.  There might also be application level</td>
      </tr>
      <tr>
        <td id="L846" class="blob-num js-line-number" data-line-number="846"></td>
        <td id="LC846" class="blob-code js-file-line">      considerations whether some request types are favored over others.</td>
      </tr>
      <tr>
        <td id="L847" class="blob-num js-line-number" data-line-number="847"></td>
        <td id="LC847" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L848" class="blob-num js-line-number" data-line-number="848"></td>
        <td id="LC848" class="blob-code js-file-line">4.  Solution Procedures (Normative)</td>
      </tr>
      <tr>
        <td id="L849" class="blob-num js-line-number" data-line-number="849"></td>
        <td id="LC849" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L850" class="blob-num js-line-number" data-line-number="850"></td>
        <td id="LC850" class="blob-code js-file-line">   This section outlines the normative behavior associated with the DOIC</td>
      </tr>
      <tr>
        <td id="L851" class="blob-num js-line-number" data-line-number="851"></td>
        <td id="LC851" class="blob-code js-file-line">   solution.</td>
      </tr>
      <tr>
        <td id="L852" class="blob-num js-line-number" data-line-number="852"></td>
        <td id="LC852" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L853" class="blob-num js-line-number" data-line-number="853"></td>
        <td id="LC853" class="blob-code js-file-line">4.1.  Capability Announcement (Normative)</td>
      </tr>
      <tr>
        <td id="L854" class="blob-num js-line-number" data-line-number="854"></td>
        <td id="LC854" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L855" class="blob-num js-line-number" data-line-number="855"></td>
        <td id="LC855" class="blob-code js-file-line">   This section defines DOIC Capability Announcement (DCA) behavior.</td>
      </tr>
      <tr>
        <td id="L856" class="blob-num js-line-number" data-line-number="856"></td>
        <td id="LC856" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L857" class="blob-num js-line-number" data-line-number="857"></td>
        <td id="LC857" class="blob-code js-file-line">   The DCA procedures are used to indicate support for DOIC and support</td>
      </tr>
      <tr>
        <td id="L858" class="blob-num js-line-number" data-line-number="858"></td>
        <td id="LC858" class="blob-code js-file-line">   for DOIC features.  The DOIC features include overload abatement</td>
      </tr>
      <tr>
        <td id="L859" class="blob-num js-line-number" data-line-number="859"></td>
        <td id="LC859" class="blob-code js-file-line">   algorithms supported.  It might also include new report types or</td>
      </tr>
      <tr>
        <td id="L860" class="blob-num js-line-number" data-line-number="860"></td>
        <td id="LC860" class="blob-code js-file-line">   other extensions documented in the future.</td>
      </tr>
      <tr>
        <td id="L861" class="blob-num js-line-number" data-line-number="861"></td>
        <td id="LC861" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L862" class="blob-num js-line-number" data-line-number="862"></td>
        <td id="LC862" class="blob-code js-file-line">   Diameter nodes indicate support for DOIC by including the OC-</td>
      </tr>
      <tr>
        <td id="L863" class="blob-num js-line-number" data-line-number="863"></td>
        <td id="LC863" class="blob-code js-file-line">   Supported-Features AVP in messages sent or handled by the node.</td>
      </tr>
      <tr>
        <td id="L864" class="blob-num js-line-number" data-line-number="864"></td>
        <td id="LC864" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L865" class="blob-num js-line-number" data-line-number="865"></td>
        <td id="LC865" class="blob-code js-file-line">   Diameter agents that support DOIC MUST ensure that all messages have</td>
      </tr>
      <tr>
        <td id="L866" class="blob-num js-line-number" data-line-number="866"></td>
        <td id="LC866" class="blob-code js-file-line">   the OC-Supporting-Features AVP.  If a message handled by the DOIC</td>
      </tr>
      <tr>
        <td id="L867" class="blob-num js-line-number" data-line-number="867"></td>
        <td id="LC867" class="blob-code js-file-line">   agent does not include the OC-Supported-Features AVP then the DOIC</td>
      </tr>
      <tr>
        <td id="L868" class="blob-num js-line-number" data-line-number="868"></td>
        <td id="LC868" class="blob-code js-file-line">   agent inserts the AVP.  If the message already has the AVP then the</td>
      </tr>
      <tr>
        <td id="L869" class="blob-num js-line-number" data-line-number="869"></td>
        <td id="LC869" class="blob-code js-file-line">   agent either leaves it unchanged in the relayed message or modifies</td>
      </tr>
      <tr>
        <td id="L870" class="blob-num js-line-number" data-line-number="870"></td>
        <td id="LC870" class="blob-code js-file-line">   it to reflect a mixed set of DOIC features.</td>
      </tr>
      <tr>
        <td id="L871" class="blob-num js-line-number" data-line-number="871"></td>
        <td id="LC871" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L872" class="blob-num js-line-number" data-line-number="872"></td>
        <td id="LC872" class="blob-code js-file-line">4.1.1.  Reacting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L873" class="blob-num js-line-number" data-line-number="873"></td>
        <td id="LC873" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L874" class="blob-num js-line-number" data-line-number="874"></td>
        <td id="LC874" class="blob-code js-file-line">   A reacting node MUST include the OC-Supported-Features AVP in all</td>
      </tr>
      <tr>
        <td id="L875" class="blob-num js-line-number" data-line-number="875"></td>
        <td id="LC875" class="blob-code js-file-line">   request messages.</td>
      </tr>
      <tr>
        <td id="L876" class="blob-num js-line-number" data-line-number="876"></td>
        <td id="LC876" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L877" class="blob-num js-line-number" data-line-number="877"></td>
        <td id="LC877" class="blob-code js-file-line">   A reacting node MUST include the OC-Feature-Vector AVP with an</td>
      </tr>
      <tr>
        <td id="L878" class="blob-num js-line-number" data-line-number="878"></td>
        <td id="LC878" class="blob-code js-file-line">   indication of the loss algorithm.</td>
      </tr>
      <tr>
        <td id="L879" class="blob-num js-line-number" data-line-number="879"></td>
        <td id="LC879" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L880" class="blob-num js-line-number" data-line-number="880"></td>
        <td id="LC880" class="blob-code js-file-line">   A reacting node SHOULD indicate support for all other DOIC features</td>
      </tr>
      <tr>
        <td id="L881" class="blob-num js-line-number" data-line-number="881"></td>
        <td id="LC881" class="blob-code js-file-line">   it supports.</td>
      </tr>
      <tr>
        <td id="L882" class="blob-num js-line-number" data-line-number="882"></td>
        <td id="LC882" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L883" class="blob-num js-line-number" data-line-number="883"></td>
        <td id="LC883" class="blob-code js-file-line">   An OC-Supported-Features AVP in answer messages indicates there is a</td>
      </tr>
      <tr>
        <td id="L884" class="blob-num js-line-number" data-line-number="884"></td>
        <td id="LC884" class="blob-code js-file-line">   reporting node for the transaction.  The reacting node MAY take</td>
      </tr>
      <tr>
        <td id="L885" class="blob-num js-line-number" data-line-number="885"></td>
        <td id="LC885" class="blob-code js-file-line">   action based on the features indicated in the OC-Feature-Vector AVP.</td>
      </tr>
      <tr>
        <td id="L886" class="blob-num js-line-number" data-line-number="886"></td>
        <td id="LC886" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L887" class="blob-num js-line-number" data-line-number="887"></td>
        <td id="LC887" class="blob-code js-file-line">      Note that the loss abatement algorithm is the only feature</td>
      </tr>
      <tr>
        <td id="L888" class="blob-num js-line-number" data-line-number="888"></td>
        <td id="LC888" class="blob-code js-file-line">      described in this document and it does not require action to be</td>
      </tr>
      <tr>
        <td id="L889" class="blob-num js-line-number" data-line-number="889"></td>
        <td id="LC889" class="blob-code js-file-line">      taken by the reacting node except when the answer message also has</td>
      </tr>
      <tr>
        <td id="L890" class="blob-num js-line-number" data-line-number="890"></td>
        <td id="LC890" class="blob-code js-file-line">      an overload report.  This behavior is described in Section 4.2 and</td>
      </tr>
      <tr>
        <td id="L891" class="blob-num js-line-number" data-line-number="891"></td>
        <td id="LC891" class="blob-code js-file-line">      Section 5.</td>
      </tr>
      <tr>
        <td id="L892" class="blob-num js-line-number" data-line-number="892"></td>
        <td id="LC892" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L893" class="blob-num js-line-number" data-line-number="893"></td>
        <td id="LC893" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L894" class="blob-num js-line-number" data-line-number="894"></td>
        <td id="LC894" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L895" class="blob-num js-line-number" data-line-number="895"></td>
        <td id="LC895" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L896" class="blob-num js-line-number" data-line-number="896"></td>
        <td id="LC896" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 16]</td>
      </tr>
      <tr>
        <td id="L897" class="blob-num js-line-number" data-line-number="897"></td>
        <td id="LC897" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L898" class="blob-num js-line-number" data-line-number="898"></td>
        <td id="LC898" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L899" class="blob-num js-line-number" data-line-number="899"></td>
        <td id="LC899" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L900" class="blob-num js-line-number" data-line-number="900"></td>
        <td id="LC900" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L901" class="blob-num js-line-number" data-line-number="901"></td>
        <td id="LC901" class="blob-code js-file-line">4.1.2.  Reporting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L902" class="blob-num js-line-number" data-line-number="902"></td>
        <td id="LC902" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L903" class="blob-num js-line-number" data-line-number="903"></td>
        <td id="LC903" class="blob-code js-file-line">   Upon receipt of a request message, a reporting node determines if</td>
      </tr>
      <tr>
        <td id="L904" class="blob-num js-line-number" data-line-number="904"></td>
        <td id="LC904" class="blob-code js-file-line">   there is a reacting node for the transaction based on the presence of</td>
      </tr>
      <tr>
        <td id="L905" class="blob-num js-line-number" data-line-number="905"></td>
        <td id="LC905" class="blob-code js-file-line">   the OC-Supported-Features AVP.</td>
      </tr>
      <tr>
        <td id="L906" class="blob-num js-line-number" data-line-number="906"></td>
        <td id="LC906" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L907" class="blob-num js-line-number" data-line-number="907"></td>
        <td id="LC907" class="blob-code js-file-line">   Based on the content of the OC-Supported-Features AVP in the request</td>
      </tr>
      <tr>
        <td id="L908" class="blob-num js-line-number" data-line-number="908"></td>
        <td id="LC908" class="blob-code js-file-line">   message, the reporting node knows what overload control functionality</td>
      </tr>
      <tr>
        <td id="L909" class="blob-num js-line-number" data-line-number="909"></td>
        <td id="LC909" class="blob-code js-file-line">   supported by reacting node(s).  The reporting node then acts</td>
      </tr>
      <tr>
        <td id="L910" class="blob-num js-line-number" data-line-number="910"></td>
        <td id="LC910" class="blob-code js-file-line">   accordingly for the subsequent answer messages it initiates.</td>
      </tr>
      <tr>
        <td id="L911" class="blob-num js-line-number" data-line-number="911"></td>
        <td id="LC911" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L912" class="blob-num js-line-number" data-line-number="912"></td>
        <td id="LC912" class="blob-code js-file-line">   If the reqeust message contains an OC-Supported-Features AVP then the</td>
      </tr>
      <tr>
        <td id="L913" class="blob-num js-line-number" data-line-number="913"></td>
        <td id="LC913" class="blob-code js-file-line">   reporting node MUST include the OC-Supported-Features AVP in the</td>
      </tr>
      <tr>
        <td id="L914" class="blob-num js-line-number" data-line-number="914"></td>
        <td id="LC914" class="blob-code js-file-line">   answer message for that transaction.</td>
      </tr>
      <tr>
        <td id="L915" class="blob-num js-line-number" data-line-number="915"></td>
        <td id="LC915" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L916" class="blob-num js-line-number" data-line-number="916"></td>
        <td id="LC916" class="blob-code js-file-line">   The reporting node MUST indicate support for one and only one</td>
      </tr>
      <tr>
        <td id="L917" class="blob-num js-line-number" data-line-number="917"></td>
        <td id="LC917" class="blob-code js-file-line">   abatement algorithm in the OC-Feature-Vector AVP.  The abatement</td>
      </tr>
      <tr>
        <td id="L918" class="blob-num js-line-number" data-line-number="918"></td>
        <td id="LC918" class="blob-code js-file-line">   algorithm included MUST be from the set of abatement algorithms</td>
      </tr>
      <tr>
        <td id="L919" class="blob-num js-line-number" data-line-number="919"></td>
        <td id="LC919" class="blob-code js-file-line">   contained in the request messages OC-Supported-Features AVP.  The</td>
      </tr>
      <tr>
        <td id="L920" class="blob-num js-line-number" data-line-number="920"></td>
        <td id="LC920" class="blob-code js-file-line">   abatement algorithm included indicates the abatement algorithm the</td>
      </tr>
      <tr>
        <td id="L921" class="blob-num js-line-number" data-line-number="921"></td>
        <td id="LC921" class="blob-code js-file-line">   reporting node wants the reacting node to use when the reporting node</td>
      </tr>
      <tr>
        <td id="L922" class="blob-num js-line-number" data-line-number="922"></td>
        <td id="LC922" class="blob-code js-file-line">   enters an overload condition.</td>
      </tr>
      <tr>
        <td id="L923" class="blob-num js-line-number" data-line-number="923"></td>
        <td id="LC923" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L924" class="blob-num js-line-number" data-line-number="924"></td>
        <td id="LC924" class="blob-code js-file-line">   The reporting node MUST NOT change the selected algorithm during a</td>
      </tr>
      <tr>
        <td id="L925" class="blob-num js-line-number" data-line-number="925"></td>
        <td id="LC925" class="blob-code js-file-line">   period of time that it is in an overload condition and, as a result,</td>
      </tr>
      <tr>
        <td id="L926" class="blob-num js-line-number" data-line-number="926"></td>
        <td id="LC926" class="blob-code js-file-line">   is sending OC-OLR AVPs in answer messages.</td>
      </tr>
      <tr>
        <td id="L927" class="blob-num js-line-number" data-line-number="927"></td>
        <td id="LC927" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L928" class="blob-num js-line-number" data-line-number="928"></td>
        <td id="LC928" class="blob-code js-file-line">   The reporting node SHOULD indicate support for other DOIC features it</td>
      </tr>
      <tr>
        <td id="L929" class="blob-num js-line-number" data-line-number="929"></td>
        <td id="LC929" class="blob-code js-file-line">   supports and that apply to the transaction.</td>
      </tr>
      <tr>
        <td id="L930" class="blob-num js-line-number" data-line-number="930"></td>
        <td id="LC930" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L931" class="blob-num js-line-number" data-line-number="931"></td>
        <td id="LC931" class="blob-code js-file-line">      Note that not all DOIC features will apply to all Diameter</td>
      </tr>
      <tr>
        <td id="L932" class="blob-num js-line-number" data-line-number="932"></td>
        <td id="LC932" class="blob-code js-file-line">      applications or deployment scenarios.  The features included in</td>
      </tr>
      <tr>
        <td id="L933" class="blob-num js-line-number" data-line-number="933"></td>
        <td id="LC933" class="blob-code js-file-line">      the OC-Feature-Vector AVP is based on local reporting node policy.</td>
      </tr>
      <tr>
        <td id="L934" class="blob-num js-line-number" data-line-number="934"></td>
        <td id="LC934" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L935" class="blob-num js-line-number" data-line-number="935"></td>
        <td id="LC935" class="blob-code js-file-line">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td>
      </tr>
      <tr>
        <td id="L936" class="blob-num js-line-number" data-line-number="936"></td>
        <td id="LC936" class="blob-code js-file-line">   OC-OLR AVP or any other overload control AVPs defined in extension</td>
      </tr>
      <tr>
        <td id="L937" class="blob-num js-line-number" data-line-number="937"></td>
        <td id="LC937" class="blob-code js-file-line">   drafts in response messages for transactions where the request</td>
      </tr>
      <tr>
        <td id="L938" class="blob-num js-line-number" data-line-number="938"></td>
        <td id="LC938" class="blob-code js-file-line">   message does not include the OC-Supported-Features AVP.  Lack of the</td>
      </tr>
      <tr>
        <td id="L939" class="blob-num js-line-number" data-line-number="939"></td>
        <td id="LC939" class="blob-code js-file-line">   OC-Supported-Features AVP in the request message indicates that there</td>
      </tr>
      <tr>
        <td id="L940" class="blob-num js-line-number" data-line-number="940"></td>
        <td id="LC940" class="blob-code js-file-line">   is no reacting node for the transaction.</td>
      </tr>
      <tr>
        <td id="L941" class="blob-num js-line-number" data-line-number="941"></td>
        <td id="LC941" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L942" class="blob-num js-line-number" data-line-number="942"></td>
        <td id="LC942" class="blob-code js-file-line">   An agent MAY modify the OC-Supported-Features AVP carried in answer</td>
      </tr>
      <tr>
        <td id="L943" class="blob-num js-line-number" data-line-number="943"></td>
        <td id="LC943" class="blob-code js-file-line">   messages.</td>
      </tr>
      <tr>
        <td id="L944" class="blob-num js-line-number" data-line-number="944"></td>
        <td id="LC944" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L945" class="blob-num js-line-number" data-line-number="945"></td>
        <td id="LC945" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L946" class="blob-num js-line-number" data-line-number="946"></td>
        <td id="LC946" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L947" class="blob-num js-line-number" data-line-number="947"></td>
        <td id="LC947" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L948" class="blob-num js-line-number" data-line-number="948"></td>
        <td id="LC948" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L949" class="blob-num js-line-number" data-line-number="949"></td>
        <td id="LC949" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L950" class="blob-num js-line-number" data-line-number="950"></td>
        <td id="LC950" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L951" class="blob-num js-line-number" data-line-number="951"></td>
        <td id="LC951" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L952" class="blob-num js-line-number" data-line-number="952"></td>
        <td id="LC952" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 17]</td>
      </tr>
      <tr>
        <td id="L953" class="blob-num js-line-number" data-line-number="953"></td>
        <td id="LC953" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L954" class="blob-num js-line-number" data-line-number="954"></td>
        <td id="LC954" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L955" class="blob-num js-line-number" data-line-number="955"></td>
        <td id="LC955" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L956" class="blob-num js-line-number" data-line-number="956"></td>
        <td id="LC956" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L957" class="blob-num js-line-number" data-line-number="957"></td>
        <td id="LC957" class="blob-code js-file-line">4.1.3.  Agent Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L958" class="blob-num js-line-number" data-line-number="958"></td>
        <td id="LC958" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L959" class="blob-num js-line-number" data-line-number="959"></td>
        <td id="LC959" class="blob-code js-file-line">   Editor&#39;s note -- Need to add this section.</td>
      </tr>
      <tr>
        <td id="L960" class="blob-num js-line-number" data-line-number="960"></td>
        <td id="LC960" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L961" class="blob-num js-line-number" data-line-number="961"></td>
        <td id="LC961" class="blob-code js-file-line">4.2.  Overload Report Processing (Normative)</td>
      </tr>
      <tr>
        <td id="L962" class="blob-num js-line-number" data-line-number="962"></td>
        <td id="LC962" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L963" class="blob-num js-line-number" data-line-number="963"></td>
        <td id="LC963" class="blob-code js-file-line">4.2.1.  Overload Control State (Normative)</td>
      </tr>
      <tr>
        <td id="L964" class="blob-num js-line-number" data-line-number="964"></td>
        <td id="LC964" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L965" class="blob-num js-line-number" data-line-number="965"></td>
        <td id="LC965" class="blob-code js-file-line">   Both reacting and reporting nodes maintain an overload control state</td>
      </tr>
      <tr>
        <td id="L966" class="blob-num js-line-number" data-line-number="966"></td>
        <td id="LC966" class="blob-code js-file-line">   (OCS) for active overload reports.</td>
      </tr>
      <tr>
        <td id="L967" class="blob-num js-line-number" data-line-number="967"></td>
        <td id="LC967" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L968" class="blob-num js-line-number" data-line-number="968"></td>
        <td id="LC968" class="blob-code js-file-line">4.2.1.1.  Overload Control State for Reacting Nodes</td>
      </tr>
      <tr>
        <td id="L969" class="blob-num js-line-number" data-line-number="969"></td>
        <td id="LC969" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L970" class="blob-num js-line-number" data-line-number="970"></td>
        <td id="LC970" class="blob-code js-file-line">   A reacting node maintains the following OCS per supported Diameter</td>
      </tr>
      <tr>
        <td id="L971" class="blob-num js-line-number" data-line-number="971"></td>
        <td id="LC971" class="blob-code js-file-line">   application:</td>
      </tr>
      <tr>
        <td id="L972" class="blob-num js-line-number" data-line-number="972"></td>
        <td id="LC972" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L973" class="blob-num js-line-number" data-line-number="973"></td>
        <td id="LC973" class="blob-code js-file-line">   o  A host-type Overload Control State for each Destination-Host</td>
      </tr>
      <tr>
        <td id="L974" class="blob-num js-line-number" data-line-number="974"></td>
        <td id="LC974" class="blob-code js-file-line">      towards which it sends host-type requests and</td>
      </tr>
      <tr>
        <td id="L975" class="blob-num js-line-number" data-line-number="975"></td>
        <td id="LC975" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L976" class="blob-num js-line-number" data-line-number="976"></td>
        <td id="LC976" class="blob-code js-file-line">   o  A realm-type Overload Control State for each Destination-Realm</td>
      </tr>
      <tr>
        <td id="L977" class="blob-num js-line-number" data-line-number="977"></td>
        <td id="LC977" class="blob-code js-file-line">      towards which it sends realm-type requests.</td>
      </tr>
      <tr>
        <td id="L978" class="blob-num js-line-number" data-line-number="978"></td>
        <td id="LC978" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L979" class="blob-num js-line-number" data-line-number="979"></td>
        <td id="LC979" class="blob-code js-file-line">   A host-type Overload Control State may be identified by the pair of</td>
      </tr>
      <tr>
        <td id="L980" class="blob-num js-line-number" data-line-number="980"></td>
        <td id="LC980" class="blob-code js-file-line">   Application-Id and Destination-Host.  A realm-type Overload Control</td>
      </tr>
      <tr>
        <td id="L981" class="blob-num js-line-number" data-line-number="981"></td>
        <td id="LC981" class="blob-code js-file-line">   State may be identified by the pair of Application-Id and</td>
      </tr>
      <tr>
        <td id="L982" class="blob-num js-line-number" data-line-number="982"></td>
        <td id="LC982" class="blob-code js-file-line">   Destination-Realm.  The host-type/realm-type Overload Control State</td>
      </tr>
      <tr>
        <td id="L983" class="blob-num js-line-number" data-line-number="983"></td>
        <td id="LC983" class="blob-code js-file-line">   for a given pair of Application and Destination-Host / Destination-</td>
      </tr>
      <tr>
        <td id="L984" class="blob-num js-line-number" data-line-number="984"></td>
        <td id="LC984" class="blob-code js-file-line">   Realm could include the following information:</td>
      </tr>
      <tr>
        <td id="L985" class="blob-num js-line-number" data-line-number="985"></td>
        <td id="LC985" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L986" class="blob-num js-line-number" data-line-number="986"></td>
        <td id="LC986" class="blob-code js-file-line">   o  Sequence number (as received in OC-OLR)</td>
      </tr>
      <tr>
        <td id="L987" class="blob-num js-line-number" data-line-number="987"></td>
        <td id="LC987" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L988" class="blob-num js-line-number" data-line-number="988"></td>
        <td id="LC988" class="blob-code js-file-line">   o  Time of expiry (deviated from validity duration as received in OC-</td>
      </tr>
      <tr>
        <td id="L989" class="blob-num js-line-number" data-line-number="989"></td>
        <td id="LC989" class="blob-code js-file-line">      OLR and time of reception)</td>
      </tr>
      <tr>
        <td id="L990" class="blob-num js-line-number" data-line-number="990"></td>
        <td id="LC990" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L991" class="blob-num js-line-number" data-line-number="991"></td>
        <td id="LC991" class="blob-code js-file-line">   o  Selected Abatement Algorithm (as received in OC-Supported-</td>
      </tr>
      <tr>
        <td id="L992" class="blob-num js-line-number" data-line-number="992"></td>
        <td id="LC992" class="blob-code js-file-line">      Features)</td>
      </tr>
      <tr>
        <td id="L993" class="blob-num js-line-number" data-line-number="993"></td>
        <td id="LC993" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L994" class="blob-num js-line-number" data-line-number="994"></td>
        <td id="LC994" class="blob-code js-file-line">   o  Algorithm specific input data (as received within OC-OLR, e.g.</td>
      </tr>
      <tr>
        <td id="L995" class="blob-num js-line-number" data-line-number="995"></td>
        <td id="LC995" class="blob-code js-file-line">      Reduction Percentage for Loss)</td>
      </tr>
      <tr>
        <td id="L996" class="blob-num js-line-number" data-line-number="996"></td>
        <td id="LC996" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L997" class="blob-num js-line-number" data-line-number="997"></td>
        <td id="LC997" class="blob-code js-file-line">4.2.1.2.  Overload Control States for Reporting Nodes</td>
      </tr>
      <tr>
        <td id="L998" class="blob-num js-line-number" data-line-number="998"></td>
        <td id="LC998" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L999" class="blob-num js-line-number" data-line-number="999"></td>
        <td id="LC999" class="blob-code js-file-line">   A reporting node maintains per supported Diameter application and per</td>
      </tr>
      <tr>
        <td id="L1000" class="blob-num js-line-number" data-line-number="1000"></td>
        <td id="LC1000" class="blob-code js-file-line">   supported (and eventually selected) Abatement Algorithm an Overload</td>
      </tr>
      <tr>
        <td id="L1001" class="blob-num js-line-number" data-line-number="1001"></td>
        <td id="LC1001" class="blob-code js-file-line">   Control State.</td>
      </tr>
      <tr>
        <td id="L1002" class="blob-num js-line-number" data-line-number="1002"></td>
        <td id="LC1002" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1003" class="blob-num js-line-number" data-line-number="1003"></td>
        <td id="LC1003" class="blob-code js-file-line">   An Overload Control State may be identified by the pair of</td>
      </tr>
      <tr>
        <td id="L1004" class="blob-num js-line-number" data-line-number="1004"></td>
        <td id="LC1004" class="blob-code js-file-line">   Application-Id and supported Abatement Algorithm.</td>
      </tr>
      <tr>
        <td id="L1005" class="blob-num js-line-number" data-line-number="1005"></td>
        <td id="LC1005" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1006" class="blob-num js-line-number" data-line-number="1006"></td>
        <td id="LC1006" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1007" class="blob-num js-line-number" data-line-number="1007"></td>
        <td id="LC1007" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1008" class="blob-num js-line-number" data-line-number="1008"></td>
        <td id="LC1008" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 18]</td>
      </tr>
      <tr>
        <td id="L1009" class="blob-num js-line-number" data-line-number="1009"></td>
        <td id="LC1009" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1010" class="blob-num js-line-number" data-line-number="1010"></td>
        <td id="LC1010" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1011" class="blob-num js-line-number" data-line-number="1011"></td>
        <td id="LC1011" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1012" class="blob-num js-line-number" data-line-number="1012"></td>
        <td id="LC1012" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1013" class="blob-num js-line-number" data-line-number="1013"></td>
        <td id="LC1013" class="blob-code js-file-line">   The Overload Control State for a given pair of Application and</td>
      </tr>
      <tr>
        <td id="L1014" class="blob-num js-line-number" data-line-number="1014"></td>
        <td id="LC1014" class="blob-code js-file-line">   Abatement Algorithm could include the information:</td>
      </tr>
      <tr>
        <td id="L1015" class="blob-num js-line-number" data-line-number="1015"></td>
        <td id="LC1015" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1016" class="blob-num js-line-number" data-line-number="1016"></td>
        <td id="LC1016" class="blob-code js-file-line">   o  Sequence number</td>
      </tr>
      <tr>
        <td id="L1017" class="blob-num js-line-number" data-line-number="1017"></td>
        <td id="LC1017" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1018" class="blob-num js-line-number" data-line-number="1018"></td>
        <td id="LC1018" class="blob-code js-file-line">   o  Validity Duration and Expiry Time</td>
      </tr>
      <tr>
        <td id="L1019" class="blob-num js-line-number" data-line-number="1019"></td>
        <td id="LC1019" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1020" class="blob-num js-line-number" data-line-number="1020"></td>
        <td id="LC1020" class="blob-code js-file-line">   o  Algorithm specific input data (e.g.  Reduction Percentage for</td>
      </tr>
      <tr>
        <td id="L1021" class="blob-num js-line-number" data-line-number="1021"></td>
        <td id="LC1021" class="blob-code js-file-line">      Loss)</td>
      </tr>
      <tr>
        <td id="L1022" class="blob-num js-line-number" data-line-number="1022"></td>
        <td id="LC1022" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1023" class="blob-num js-line-number" data-line-number="1023"></td>
        <td id="LC1023" class="blob-code js-file-line">   Overload Control States for reporting nodes containing a validity</td>
      </tr>
      <tr>
        <td id="L1024" class="blob-num js-line-number" data-line-number="1024"></td>
        <td id="LC1024" class="blob-code js-file-line">   duration of 0 sec. should not expire before any previously sent</td>
      </tr>
      <tr>
        <td id="L1025" class="blob-num js-line-number" data-line-number="1025"></td>
        <td id="LC1025" class="blob-code js-file-line">   (stale) OLR has timed out at any reacting node.</td>
      </tr>
      <tr>
        <td id="L1026" class="blob-num js-line-number" data-line-number="1026"></td>
        <td id="LC1026" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1027" class="blob-num js-line-number" data-line-number="1027"></td>
        <td id="LC1027" class="blob-code js-file-line">   Editor&#39;s note: This statement is unclear and contradictory with other</td>
      </tr>
      <tr>
        <td id="L1028" class="blob-num js-line-number" data-line-number="1028"></td>
        <td id="LC1028" class="blob-code js-file-line">   statements.  A validity timer of zero seconds indicates that the</td>
      </tr>
      <tr>
        <td id="L1029" class="blob-num js-line-number" data-line-number="1029"></td>
        <td id="LC1029" class="blob-code js-file-line">   overload condition has ended and abatement is no longer requested.</td>
      </tr>
      <tr>
        <td id="L1030" class="blob-num js-line-number" data-line-number="1030"></td>
        <td id="LC1030" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1031" class="blob-num js-line-number" data-line-number="1031"></td>
        <td id="LC1031" class="blob-code js-file-line">4.2.1.3.  Maintaining Overload Control State</td>
      </tr>
      <tr>
        <td id="L1032" class="blob-num js-line-number" data-line-number="1032"></td>
        <td id="LC1032" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1033" class="blob-num js-line-number" data-line-number="1033"></td>
        <td id="LC1033" class="blob-code js-file-line">   Reacting nodes create a host-type OCS identified by OCS-Id = (app-</td>
      </tr>
      <tr>
        <td id="L1034" class="blob-num js-line-number" data-line-number="1034"></td>
        <td id="LC1034" class="blob-code js-file-line">   id,host-id) when receiving an answer message of application app-id</td>
      </tr>
      <tr>
        <td id="L1035" class="blob-num js-line-number" data-line-number="1035"></td>
        <td id="LC1035" class="blob-code js-file-line">   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless</td>
      </tr>
      <tr>
        <td id="L1036" class="blob-num js-line-number" data-line-number="1036"></td>
        <td id="LC1036" class="blob-code js-file-line">   such host-type OCS already exists.</td>
      </tr>
      <tr>
        <td id="L1037" class="blob-num js-line-number" data-line-number="1037"></td>
        <td id="LC1037" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1038" class="blob-num js-line-number" data-line-number="1038"></td>
        <td id="LC1038" class="blob-code js-file-line">   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-</td>
      </tr>
      <tr>
        <td id="L1039" class="blob-num js-line-number" data-line-number="1039"></td>
        <td id="LC1039" class="blob-code js-file-line">   id,realm-id) when receiving an answer message of application app-id</td>
      </tr>
      <tr>
        <td id="L1040" class="blob-num js-line-number" data-line-number="1040"></td>
        <td id="LC1040" class="blob-code js-file-line">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L1041" class="blob-num js-line-number" data-line-number="1041"></td>
        <td id="LC1041" class="blob-code js-file-line">   unless such realm type OCS already exists.</td>
      </tr>
      <tr>
        <td id="L1042" class="blob-num js-line-number" data-line-number="1042"></td>
        <td id="LC1042" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1043" class="blob-num js-line-number" data-line-number="1043"></td>
        <td id="LC1043" class="blob-code js-file-line">   Reacting nodes delete an OCS when it expires (i.e. when current time</td>
      </tr>
      <tr>
        <td id="L1044" class="blob-num js-line-number" data-line-number="1044"></td>
        <td id="LC1044" class="blob-code js-file-line">   minus reception time is greater than validity duration).</td>
      </tr>
      <tr>
        <td id="L1045" class="blob-num js-line-number" data-line-number="1045"></td>
        <td id="LC1045" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1046" class="blob-num js-line-number" data-line-number="1046"></td>
        <td id="LC1046" class="blob-code js-file-line">   Editor&#39;s note: Reacting nodes also delete on OCS with an updated OLR</td>
      </tr>
      <tr>
        <td id="L1047" class="blob-num js-line-number" data-line-number="1047"></td>
        <td id="LC1047" class="blob-code js-file-line">   is received with a validity duration of zero.</td>
      </tr>
      <tr>
        <td id="L1048" class="blob-num js-line-number" data-line-number="1048"></td>
        <td id="LC1048" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1049" class="blob-num js-line-number" data-line-number="1049"></td>
        <td id="LC1049" class="blob-code js-file-line">   Reacting nodes update the host-type OCS identified by OCS-Id = (app-</td>
      </tr>
      <tr>
        <td id="L1050" class="blob-num js-line-number" data-line-number="1050"></td>
        <td id="LC1050" class="blob-code js-file-line">   id,host-id) when receiving an answer message of application app-id</td>
      </tr>
      <tr>
        <td id="L1051" class="blob-num js-line-number" data-line-number="1051"></td>
        <td id="LC1051" class="blob-code js-file-line">   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a</td>
      </tr>
      <tr>
        <td id="L1052" class="blob-num js-line-number" data-line-number="1052"></td>
        <td id="LC1052" class="blob-code js-file-line">   sequence number higher than the stored sequence number.</td>
      </tr>
      <tr>
        <td id="L1053" class="blob-num js-line-number" data-line-number="1053"></td>
        <td id="LC1053" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1054" class="blob-num js-line-number" data-line-number="1054"></td>
        <td id="LC1054" class="blob-code js-file-line">   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-</td>
      </tr>
      <tr>
        <td id="L1055" class="blob-num js-line-number" data-line-number="1055"></td>
        <td id="LC1055" class="blob-code js-file-line">   id,realm-id) when receiving an answer message of application app-id</td>
      </tr>
      <tr>
        <td id="L1056" class="blob-num js-line-number" data-line-number="1056"></td>
        <td id="LC1056" class="blob-code js-file-line">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with</td>
      </tr>
      <tr>
        <td id="L1057" class="blob-num js-line-number" data-line-number="1057"></td>
        <td id="LC1057" class="blob-code js-file-line">   a sequence number higher than the stored sequence number.</td>
      </tr>
      <tr>
        <td id="L1058" class="blob-num js-line-number" data-line-number="1058"></td>
        <td id="LC1058" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1059" class="blob-num js-line-number" data-line-number="1059"></td>
        <td id="LC1059" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1060" class="blob-num js-line-number" data-line-number="1060"></td>
        <td id="LC1060" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1061" class="blob-num js-line-number" data-line-number="1061"></td>
        <td id="LC1061" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1062" class="blob-num js-line-number" data-line-number="1062"></td>
        <td id="LC1062" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1063" class="blob-num js-line-number" data-line-number="1063"></td>
        <td id="LC1063" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1064" class="blob-num js-line-number" data-line-number="1064"></td>
        <td id="LC1064" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 19]</td>
      </tr>
      <tr>
        <td id="L1065" class="blob-num js-line-number" data-line-number="1065"></td>
        <td id="LC1065" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1066" class="blob-num js-line-number" data-line-number="1066"></td>
        <td id="LC1066" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1067" class="blob-num js-line-number" data-line-number="1067"></td>
        <td id="LC1067" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1068" class="blob-num js-line-number" data-line-number="1068"></td>
        <td id="LC1068" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1069" class="blob-num js-line-number" data-line-number="1069"></td>
        <td id="LC1069" class="blob-code js-file-line">   Reacting nodes do not delete an OCS when receiving an answer message</td>
      </tr>
      <tr>
        <td id="L1070" class="blob-num js-line-number" data-line-number="1070"></td>
        <td id="LC1070" class="blob-code js-file-line">   that does not contain an OC-OLR AVP (i.e. absence of OLR means &quot;no</td>
      </tr>
      <tr>
        <td id="L1071" class="blob-num js-line-number" data-line-number="1071"></td>
        <td id="LC1071" class="blob-code js-file-line">   change&quot;).</td>
      </tr>
      <tr>
        <td id="L1072" class="blob-num js-line-number" data-line-number="1072"></td>
        <td id="LC1072" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1073" class="blob-num js-line-number" data-line-number="1073"></td>
        <td id="LC1073" class="blob-code js-file-line">   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)</td>
      </tr>
      <tr>
        <td id="L1074" class="blob-num js-line-number" data-line-number="1074"></td>
        <td id="LC1074" class="blob-code js-file-line">   when receiving a request of application app-id containing an OC-</td>
      </tr>
      <tr>
        <td id="L1075" class="blob-num js-line-number" data-line-number="1075"></td>
        <td id="LC1075" class="blob-code js-file-line">   Supported-Features AVP indicating support of the Abatement Algorithm</td>
      </tr>
      <tr>
        <td id="L1076" class="blob-num js-line-number" data-line-number="1076"></td>
        <td id="LC1076" class="blob-code js-file-line">   Alg (which the reporting node selects) while being overloaded, unless</td>
      </tr>
      <tr>
        <td id="L1077" class="blob-num js-line-number" data-line-number="1077"></td>
        <td id="LC1077" class="blob-code js-file-line">   such OCS already exists.</td>
      </tr>
      <tr>
        <td id="L1078" class="blob-num js-line-number" data-line-number="1078"></td>
        <td id="LC1078" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1079" class="blob-num js-line-number" data-line-number="1079"></td>
        <td id="LC1079" class="blob-code js-file-line">   Reporting nodes delete an OCS when it expires.</td>
      </tr>
      <tr>
        <td id="L1080" class="blob-num js-line-number" data-line-number="1080"></td>
        <td id="LC1080" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1081" class="blob-num js-line-number" data-line-number="1081"></td>
        <td id="LC1081" class="blob-code js-file-line">   Editor&#39;s note: Reporting nodes should send updated overload reports</td>
      </tr>
      <tr>
        <td id="L1082" class="blob-num js-line-number" data-line-number="1082"></td>
        <td id="LC1082" class="blob-code js-file-line">   with a validity duration of zero for a period of time after an OCS</td>
      </tr>
      <tr>
        <td id="L1083" class="blob-num js-line-number" data-line-number="1083"></td>
        <td id="LC1083" class="blob-code js-file-line">   expires or is removed due to the overload condition ending.</td>
      </tr>
      <tr>
        <td id="L1084" class="blob-num js-line-number" data-line-number="1084"></td>
        <td id="LC1084" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1085" class="blob-num js-line-number" data-line-number="1085"></td>
        <td id="LC1085" class="blob-code js-file-line">   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)</td>
      </tr>
      <tr>
        <td id="L1086" class="blob-num js-line-number" data-line-number="1086"></td>
        <td id="LC1086" class="blob-code js-file-line">   when they detect the need to modify the requested amount of</td>
      </tr>
      <tr>
        <td id="L1087" class="blob-num js-line-number" data-line-number="1087"></td>
        <td id="LC1087" class="blob-code js-file-line">   application app-id traffic reduction.</td>
      </tr>
      <tr>
        <td id="L1088" class="blob-num js-line-number" data-line-number="1088"></td>
        <td id="LC1088" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1089" class="blob-num js-line-number" data-line-number="1089"></td>
        <td id="LC1089" class="blob-code js-file-line">4.2.2.  Reacting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L1090" class="blob-num js-line-number" data-line-number="1090"></td>
        <td id="LC1090" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1091" class="blob-num js-line-number" data-line-number="1091"></td>
        <td id="LC1091" class="blob-code js-file-line">   Once a reacting node receives an OC-OLR AVP from a reporting node, it</td>
      </tr>
      <tr>
        <td id="L1092" class="blob-num js-line-number" data-line-number="1092"></td>
        <td id="LC1092" class="blob-code js-file-line">   applies traffic abatement based on the selected algorithm with the</td>
      </tr>
      <tr>
        <td id="L1093" class="blob-num js-line-number" data-line-number="1093"></td>
        <td id="LC1093" class="blob-code js-file-line">   reporting node and the current overload condition.  The reacting node</td>
      </tr>
      <tr>
        <td id="L1094" class="blob-num js-line-number" data-line-number="1094"></td>
        <td id="LC1094" class="blob-code js-file-line">   learns the reporting node supported abatement algorithms directly</td>
      </tr>
      <tr>
        <td id="L1095" class="blob-num js-line-number" data-line-number="1095"></td>
        <td id="LC1095" class="blob-code js-file-line">   from the received answer message containing the OC-Supported-Features</td>
      </tr>
      <tr>
        <td id="L1096" class="blob-num js-line-number" data-line-number="1096"></td>
        <td id="LC1096" class="blob-code js-file-line">   AVP.</td>
      </tr>
      <tr>
        <td id="L1097" class="blob-num js-line-number" data-line-number="1097"></td>
        <td id="LC1097" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1098" class="blob-num js-line-number" data-line-number="1098"></td>
        <td id="LC1098" class="blob-code js-file-line">   The received OC-Supported-Features AVP does not change the existing</td>
      </tr>
      <tr>
        <td id="L1099" class="blob-num js-line-number" data-line-number="1099"></td>
        <td id="LC1099" class="blob-code js-file-line">   overload condition and/or traffic abatement algorithm settings if the</td>
      </tr>
      <tr>
        <td id="L1100" class="blob-num js-line-number" data-line-number="1100"></td>
        <td id="LC1100" class="blob-code js-file-line">   OC-Sequence-Number AVP contains a value that is equal to the</td>
      </tr>
      <tr>
        <td id="L1101" class="blob-num js-line-number" data-line-number="1101"></td>
        <td id="LC1101" class="blob-code js-file-line">   previously received/recorded value.  If the OC-Supported-Features AVP</td>
      </tr>
      <tr>
        <td id="L1102" class="blob-num js-line-number" data-line-number="1102"></td>
        <td id="LC1102" class="blob-code js-file-line">   is received for the first time for the reporting node or the OC-</td>
      </tr>
      <tr>
        <td id="L1103" class="blob-num js-line-number" data-line-number="1103"></td>
        <td id="LC1103" class="blob-code js-file-line">   Sequence-Number AVP value is less than the previously received/</td>
      </tr>
      <tr>
        <td id="L1104" class="blob-num js-line-number" data-line-number="1104"></td>
        <td id="LC1104" class="blob-code js-file-line">   recorded value (and is outside the valid overflow window), then the</td>
      </tr>
      <tr>
        <td id="L1105" class="blob-num js-line-number" data-line-number="1105"></td>
        <td id="LC1105" class="blob-code js-file-line">   sequence number is stale (e.g. an intentional or unintentional</td>
      </tr>
      <tr>
        <td id="L1106" class="blob-num js-line-number" data-line-number="1106"></td>
        <td id="LC1106" class="blob-code js-file-line">   replay) and SHOULD be silently discarded.</td>
      </tr>
      <tr>
        <td id="L1107" class="blob-num js-line-number" data-line-number="1107"></td>
        <td id="LC1107" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1108" class="blob-num js-line-number" data-line-number="1108"></td>
        <td id="LC1108" class="blob-code js-file-line">   As described in Section 6.3, the OC-OLR AVP contains the necessary</td>
      </tr>
      <tr>
        <td id="L1109" class="blob-num js-line-number" data-line-number="1109"></td>
        <td id="LC1109" class="blob-code js-file-line">   information for the overload condition on the reporting node.</td>
      </tr>
      <tr>
        <td id="L1110" class="blob-num js-line-number" data-line-number="1110"></td>
        <td id="LC1110" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1111" class="blob-num js-line-number" data-line-number="1111"></td>
        <td id="LC1111" class="blob-code js-file-line">   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting</td>
      </tr>
      <tr>
        <td id="L1112" class="blob-num js-line-number" data-line-number="1112"></td>
        <td id="LC1112" class="blob-code js-file-line">   node learns whether the overload condition report concerns a specific</td>
      </tr>
      <tr>
        <td id="L1113" class="blob-num js-line-number" data-line-number="1113"></td>
        <td id="LC1113" class="blob-code js-file-line">   host (as identified by the Origin-Host AVP of the answer message</td>
      </tr>
      <tr>
        <td id="L1114" class="blob-num js-line-number" data-line-number="1114"></td>
        <td id="LC1114" class="blob-code js-file-line">   containing the OC-OLR AVP) or the entire realm (as identified by the</td>
      </tr>
      <tr>
        <td id="L1115" class="blob-num js-line-number" data-line-number="1115"></td>
        <td id="LC1115" class="blob-code js-file-line">   Origin-Realm AVP of the answer message containing the OC-OLR AVP).</td>
      </tr>
      <tr>
        <td id="L1116" class="blob-num js-line-number" data-line-number="1116"></td>
        <td id="LC1116" class="blob-code js-file-line">   The reacting node learns the Diameter application to which the</td>
      </tr>
      <tr>
        <td id="L1117" class="blob-num js-line-number" data-line-number="1117"></td>
        <td id="LC1117" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1118" class="blob-num js-line-number" data-line-number="1118"></td>
        <td id="LC1118" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1119" class="blob-num js-line-number" data-line-number="1119"></td>
        <td id="LC1119" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1120" class="blob-num js-line-number" data-line-number="1120"></td>
        <td id="LC1120" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 20]</td>
      </tr>
      <tr>
        <td id="L1121" class="blob-num js-line-number" data-line-number="1121"></td>
        <td id="LC1121" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1122" class="blob-num js-line-number" data-line-number="1122"></td>
        <td id="LC1122" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1123" class="blob-num js-line-number" data-line-number="1123"></td>
        <td id="LC1123" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1124" class="blob-num js-line-number" data-line-number="1124"></td>
        <td id="LC1124" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1125" class="blob-num js-line-number" data-line-number="1125"></td>
        <td id="LC1125" class="blob-code js-file-line">   overload report applies from the Application-ID of the answer message</td>
      </tr>
      <tr>
        <td id="L1126" class="blob-num js-line-number" data-line-number="1126"></td>
        <td id="LC1126" class="blob-code js-file-line">   containing the OC-OLR AVP.  The reacting node MUST use this</td>
      </tr>
      <tr>
        <td id="L1127" class="blob-num js-line-number" data-line-number="1127"></td>
        <td id="LC1127" class="blob-code js-file-line">   information as an input for its traffic abatement algorithm.  The</td>
      </tr>
      <tr>
        <td id="L1128" class="blob-num js-line-number" data-line-number="1128"></td>
        <td id="LC1128" class="blob-code js-file-line">   idea is that the reacting node applies different handling of the</td>
      </tr>
      <tr>
        <td id="L1129" class="blob-num js-line-number" data-line-number="1129"></td>
        <td id="LC1129" class="blob-code js-file-line">   traffic abatement, whether sent request messages are targeted to a</td>
      </tr>
      <tr>
        <td id="L1130" class="blob-num js-line-number" data-line-number="1130"></td>
        <td id="LC1130" class="blob-code js-file-line">   specific host (identified by the Diameter-Host AVP in the request) or</td>
      </tr>
      <tr>
        <td id="L1131" class="blob-num js-line-number" data-line-number="1131"></td>
        <td id="LC1131" class="blob-code js-file-line">   to any host in a realm (when only the Destination-Realm AVP is</td>
      </tr>
      <tr>
        <td id="L1132" class="blob-num js-line-number" data-line-number="1132"></td>
        <td id="LC1132" class="blob-code js-file-line">   present in the request).  Note that future specifications MAY define</td>
      </tr>
      <tr>
        <td id="L1133" class="blob-num js-line-number" data-line-number="1133"></td>
        <td id="LC1133" class="blob-code js-file-line">   new OC-Report-Type AVP values that imply different handling of the</td>
      </tr>
      <tr>
        <td id="L1134" class="blob-num js-line-number" data-line-number="1134"></td>
        <td id="LC1134" class="blob-code js-file-line">   OC-OLR AVP.  For example, in a form of new additional AVPs inside the</td>
      </tr>
      <tr>
        <td id="L1135" class="blob-num js-line-number" data-line-number="1135"></td>
        <td id="LC1135" class="blob-code js-file-line">   Grouped OC-OLR AVP that would define report target in a finer</td>
      </tr>
      <tr>
        <td id="L1136" class="blob-num js-line-number" data-line-number="1136"></td>
        <td id="LC1136" class="blob-code js-file-line">   granularity than just a host.</td>
      </tr>
      <tr>
        <td id="L1137" class="blob-num js-line-number" data-line-number="1137"></td>
        <td id="LC1137" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1138" class="blob-num js-line-number" data-line-number="1138"></td>
        <td id="LC1138" class="blob-code js-file-line">      Editor&#39;s note: The above behavior for Realm reports is</td>
      </tr>
      <tr>
        <td id="L1139" class="blob-num js-line-number" data-line-number="1139"></td>
        <td id="LC1139" class="blob-code js-file-line">      inconsistent with the definition of realm reports in section</td>
      </tr>
      <tr>
        <td id="L1140" class="blob-num js-line-number" data-line-number="1140"></td>
        <td id="LC1140" class="blob-code js-file-line">      Section 6.6.</td>
      </tr>
      <tr>
        <td id="L1141" class="blob-num js-line-number" data-line-number="1141"></td>
        <td id="LC1141" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1142" class="blob-num js-line-number" data-line-number="1142"></td>
        <td id="LC1142" class="blob-code js-file-line">   If the OC-OLR AVP is received for the first time, the reacting node</td>
      </tr>
      <tr>
        <td id="L1143" class="blob-num js-line-number" data-line-number="1143"></td>
        <td id="LC1143" class="blob-code js-file-line">   MUST create overload control state associated with the related realm</td>
      </tr>
      <tr>
        <td id="L1144" class="blob-num js-line-number" data-line-number="1144"></td>
        <td id="LC1144" class="blob-code js-file-line">   or a specific host in the realm identified in the message carrying</td>
      </tr>
      <tr>
        <td id="L1145" class="blob-num js-line-number" data-line-number="1145"></td>
        <td id="LC1145" class="blob-code js-file-line">   the OC-OLR AVP, as described in Section 4.2.1.</td>
      </tr>
      <tr>
        <td id="L1146" class="blob-num js-line-number" data-line-number="1146"></td>
        <td id="LC1146" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1147" class="blob-num js-line-number" data-line-number="1147"></td>
        <td id="LC1147" class="blob-code js-file-line">   If the value of the OC-Sequence-Number AVP contained in the received</td>
      </tr>
      <tr>
        <td id="L1148" class="blob-num js-line-number" data-line-number="1148"></td>
        <td id="LC1148" class="blob-code js-file-line">   OC-OLR AVP is equal to or less than the value stored in an existing</td>
      </tr>
      <tr>
        <td id="L1149" class="blob-num js-line-number" data-line-number="1149"></td>
        <td id="LC1149" class="blob-code js-file-line">   overload control state, the received OC-OLR AVP SHOULD be silently</td>
      </tr>
      <tr>
        <td id="L1150" class="blob-num js-line-number" data-line-number="1150"></td>
        <td id="LC1150" class="blob-code js-file-line">   discarded.  If the value of the OC-Sequence-Number AVP contained in</td>
      </tr>
      <tr>
        <td id="L1151" class="blob-num js-line-number" data-line-number="1151"></td>
        <td id="LC1151" class="blob-code js-file-line">   the received OC-OLR AVP is greater than the value stored in an</td>
      </tr>
      <tr>
        <td id="L1152" class="blob-num js-line-number" data-line-number="1152"></td>
        <td id="LC1152" class="blob-code js-file-line">   existing overload control state or there is no previously recorded</td>
      </tr>
      <tr>
        <td id="L1153" class="blob-num js-line-number" data-line-number="1153"></td>
        <td id="LC1153" class="blob-code js-file-line">   sequence number, the reacting node MUST update the overload control</td>
      </tr>
      <tr>
        <td id="L1154" class="blob-num js-line-number" data-line-number="1154"></td>
        <td id="LC1154" class="blob-code js-file-line">   state associated with the realm or the specific node in the realm.</td>
      </tr>
      <tr>
        <td id="L1155" class="blob-num js-line-number" data-line-number="1155"></td>
        <td id="LC1155" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1156" class="blob-num js-line-number" data-line-number="1156"></td>
        <td id="LC1156" class="blob-code js-file-line">   When an overload control state is created or updated, the reacting</td>
      </tr>
      <tr>
        <td id="L1157" class="blob-num js-line-number" data-line-number="1157"></td>
        <td id="LC1157" class="blob-code js-file-line">   node MUST apply the traffic abatement requested in the OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L1158" class="blob-num js-line-number" data-line-number="1158"></td>
        <td id="LC1158" class="blob-code js-file-line">   using the algorithm announced in the OC-Supported-Features AVP</td>
      </tr>
      <tr>
        <td id="L1159" class="blob-num js-line-number" data-line-number="1159"></td>
        <td id="LC1159" class="blob-code js-file-line">   contained in the received answer message along with the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1160" class="blob-num js-line-number" data-line-number="1160"></td>
        <td id="LC1160" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1161" class="blob-num js-line-number" data-line-number="1161"></td>
        <td id="LC1161" class="blob-code js-file-line">   The validity duration of the overload information contained in the</td>
      </tr>
      <tr>
        <td id="L1162" class="blob-num js-line-number" data-line-number="1162"></td>
        <td id="LC1162" class="blob-code js-file-line">   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration</td>
      </tr>
      <tr>
        <td id="L1163" class="blob-num js-line-number" data-line-number="1163"></td>
        <td id="LC1163" class="blob-code js-file-line">   AVP or is implicitly equals to the default value (5 seconds) if the</td>
      </tr>
      <tr>
        <td id="L1164" class="blob-num js-line-number" data-line-number="1164"></td>
        <td id="LC1164" class="blob-code js-file-line">   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain</td>
      </tr>
      <tr>
        <td id="L1165" class="blob-num js-line-number" data-line-number="1165"></td>
        <td id="LC1165" class="blob-code js-file-line">   the validity duration in the overload control state.  Once the</td>
      </tr>
      <tr>
        <td id="L1166" class="blob-num js-line-number" data-line-number="1166"></td>
        <td id="LC1166" class="blob-code js-file-line">   validity duration times out, the reacting node MUST assume the</td>
      </tr>
      <tr>
        <td id="L1167" class="blob-num js-line-number" data-line-number="1167"></td>
        <td id="LC1167" class="blob-code js-file-line">   overload condition reported in a previous OC-OLR AVP has ended.</td>
      </tr>
      <tr>
        <td id="L1168" class="blob-num js-line-number" data-line-number="1168"></td>
        <td id="LC1168" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1169" class="blob-num js-line-number" data-line-number="1169"></td>
        <td id="LC1169" class="blob-code js-file-line">   A value of zero (&quot;0&quot;) received in the OC-Validity-Duration in an</td>
      </tr>
      <tr>
        <td id="L1170" class="blob-num js-line-number" data-line-number="1170"></td>
        <td id="LC1170" class="blob-code js-file-line">   updated overload report indicates that the overload condition has</td>
      </tr>
      <tr>
        <td id="L1171" class="blob-num js-line-number" data-line-number="1171"></td>
        <td id="LC1171" class="blob-code js-file-line">   ended and that the overload state is no longer valid.</td>
      </tr>
      <tr>
        <td id="L1172" class="blob-num js-line-number" data-line-number="1172"></td>
        <td id="LC1172" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1173" class="blob-num js-line-number" data-line-number="1173"></td>
        <td id="LC1173" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1174" class="blob-num js-line-number" data-line-number="1174"></td>
        <td id="LC1174" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1175" class="blob-num js-line-number" data-line-number="1175"></td>
        <td id="LC1175" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1176" class="blob-num js-line-number" data-line-number="1176"></td>
        <td id="LC1176" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 21]</td>
      </tr>
      <tr>
        <td id="L1177" class="blob-num js-line-number" data-line-number="1177"></td>
        <td id="LC1177" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1178" class="blob-num js-line-number" data-line-number="1178"></td>
        <td id="LC1178" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1179" class="blob-num js-line-number" data-line-number="1179"></td>
        <td id="LC1179" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1180" class="blob-num js-line-number" data-line-number="1180"></td>
        <td id="LC1180" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1181" class="blob-num js-line-number" data-line-number="1181"></td>
        <td id="LC1181" class="blob-code js-file-line">   In the case that the validity duration expires or is explicitly</td>
      </tr>
      <tr>
        <td id="L1182" class="blob-num js-line-number" data-line-number="1182"></td>
        <td id="LC1182" class="blob-code js-file-line">   signaled as being no longer valid the state associated with the</td>
      </tr>
      <tr>
        <td id="L1183" class="blob-num js-line-number" data-line-number="1183"></td>
        <td id="LC1183" class="blob-code js-file-line">   overload report MUST be removed and any abatement associated with the</td>
      </tr>
      <tr>
        <td id="L1184" class="blob-num js-line-number" data-line-number="1184"></td>
        <td id="LC1184" class="blob-code js-file-line">   overload report MUST be ended in a controlled fashion.  After</td>
      </tr>
      <tr>
        <td id="L1185" class="blob-num js-line-number" data-line-number="1185"></td>
        <td id="LC1185" class="blob-code js-file-line">   removing the overload state the sequence number MUST NOT be used for</td>
      </tr>
      <tr>
        <td id="L1186" class="blob-num js-line-number" data-line-number="1186"></td>
        <td id="LC1186" class="blob-code js-file-line">   future comparisons of sequence numbers.</td>
      </tr>
      <tr>
        <td id="L1187" class="blob-num js-line-number" data-line-number="1187"></td>
        <td id="LC1187" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1188" class="blob-num js-line-number" data-line-number="1188"></td>
        <td id="LC1188" class="blob-code js-file-line">4.2.3.  Reporting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L1189" class="blob-num js-line-number" data-line-number="1189"></td>
        <td id="LC1189" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1190" class="blob-num js-line-number" data-line-number="1190"></td>
        <td id="LC1190" class="blob-code js-file-line">   A reporting node is a Diameter node inserting an OC-OLR AVP in a</td>
      </tr>
      <tr>
        <td id="L1191" class="blob-num js-line-number" data-line-number="1191"></td>
        <td id="LC1191" class="blob-code js-file-line">   Diameter message in order to inform a reacting node about an overload</td>
      </tr>
      <tr>
        <td id="L1192" class="blob-num js-line-number" data-line-number="1192"></td>
        <td id="LC1192" class="blob-code js-file-line">   condition and request Diameter traffic abatement.</td>
      </tr>
      <tr>
        <td id="L1193" class="blob-num js-line-number" data-line-number="1193"></td>
        <td id="LC1193" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1194" class="blob-num js-line-number" data-line-number="1194"></td>
        <td id="LC1194" class="blob-code js-file-line">   The operation on the reporting node is straight forward.  The</td>
      </tr>
      <tr>
        <td id="L1195" class="blob-num js-line-number" data-line-number="1195"></td>
        <td id="LC1195" class="blob-code js-file-line">   reporting node learns the capabilities of the reacting node when it</td>
      </tr>
      <tr>
        <td id="L1196" class="blob-num js-line-number" data-line-number="1196"></td>
        <td id="LC1196" class="blob-code js-file-line">   receives the OC-Supported-Features AVP as part of any Diameter</td>
      </tr>
      <tr>
        <td id="L1197" class="blob-num js-line-number" data-line-number="1197"></td>
        <td id="LC1197" class="blob-code js-file-line">   request message.  If the reporting node shares at least one common</td>
      </tr>
      <tr>
        <td id="L1198" class="blob-num js-line-number" data-line-number="1198"></td>
        <td id="LC1198" class="blob-code js-file-line">   feature with the reacting node, then the DOIC can be enabled between</td>
      </tr>
      <tr>
        <td id="L1199" class="blob-num js-line-number" data-line-number="1199"></td>
        <td id="LC1199" class="blob-code js-file-line">   these DOIC nodes See Section 4.1 for further discussion on the</td>
      </tr>
      <tr>
        <td id="L1200" class="blob-num js-line-number" data-line-number="1200"></td>
        <td id="LC1200" class="blob-code js-file-line">   capability and feature announcement.</td>
      </tr>
      <tr>
        <td id="L1201" class="blob-num js-line-number" data-line-number="1201"></td>
        <td id="LC1201" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1202" class="blob-num js-line-number" data-line-number="1202"></td>
        <td id="LC1202" class="blob-code js-file-line">   When a traffic reduction is required due to an overload condition and</td>
      </tr>
      <tr>
        <td id="L1203" class="blob-num js-line-number" data-line-number="1203"></td>
        <td id="LC1203" class="blob-code js-file-line">   the overload control solution is supported by the sender of the</td>
      </tr>
      <tr>
        <td id="L1204" class="blob-num js-line-number" data-line-number="1204"></td>
        <td id="LC1204" class="blob-code js-file-line">   Diameter request, the reporting node MUST include an OC-Supported-</td>
      </tr>
      <tr>
        <td id="L1205" class="blob-num js-line-number" data-line-number="1205"></td>
        <td id="LC1205" class="blob-code js-file-line">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td>
      </tr>
      <tr>
        <td id="L1206" class="blob-num js-line-number" data-line-number="1206"></td>
        <td id="LC1206" class="blob-code js-file-line">   The OC-OLR AVP contains the required traffic reduction and the OC-</td>
      </tr>
      <tr>
        <td id="L1207" class="blob-num js-line-number" data-line-number="1207"></td>
        <td id="LC1207" class="blob-code js-file-line">   Supported-Features AVP indicates the traffic abatement algorithm to</td>
      </tr>
      <tr>
        <td id="L1208" class="blob-num js-line-number" data-line-number="1208"></td>
        <td id="LC1208" class="blob-code js-file-line">   apply.  This algorithm MUST be one of the algorithms advertised by</td>
      </tr>
      <tr>
        <td id="L1209" class="blob-num js-line-number" data-line-number="1209"></td>
        <td id="LC1209" class="blob-code js-file-line">   the request sender.</td>
      </tr>
      <tr>
        <td id="L1210" class="blob-num js-line-number" data-line-number="1210"></td>
        <td id="LC1210" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1211" class="blob-num js-line-number" data-line-number="1211"></td>
        <td id="LC1211" class="blob-code js-file-line">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td>
      </tr>
      <tr>
        <td id="L1212" class="blob-num js-line-number" data-line-number="1212"></td>
        <td id="LC1212" class="blob-code js-file-line">   the implicit overload control state cleanup on the reacting node.</td>
      </tr>
      <tr>
        <td id="L1213" class="blob-num js-line-number" data-line-number="1213"></td>
        <td id="LC1213" class="blob-code js-file-line">   However, it is RECOMMENDED that the reporting node always explicitly</td>
      </tr>
      <tr>
        <td id="L1214" class="blob-num js-line-number" data-line-number="1214"></td>
        <td id="LC1214" class="blob-code js-file-line">   indicates the end of a overload condition.</td>
      </tr>
      <tr>
        <td id="L1215" class="blob-num js-line-number" data-line-number="1215"></td>
        <td id="LC1215" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1216" class="blob-num js-line-number" data-line-number="1216"></td>
        <td id="LC1216" class="blob-code js-file-line">   The reporting node SHOULD indicate the end of an overload occurrence</td>
      </tr>
      <tr>
        <td id="L1217" class="blob-num js-line-number" data-line-number="1217"></td>
        <td id="LC1217" class="blob-code js-file-line">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td>
      </tr>
      <tr>
        <td id="L1218" class="blob-num js-line-number" data-line-number="1218"></td>
        <td id="LC1218" class="blob-code js-file-line">   (&quot;0&quot;).  The reporting node SHOULD insure that all reacting nodes</td>
      </tr>
      <tr>
        <td id="L1219" class="blob-num js-line-number" data-line-number="1219"></td>
        <td id="LC1219" class="blob-code js-file-line">   receive the updated overload report.</td>
      </tr>
      <tr>
        <td id="L1220" class="blob-num js-line-number" data-line-number="1220"></td>
        <td id="LC1220" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1221" class="blob-num js-line-number" data-line-number="1221"></td>
        <td id="LC1221" class="blob-code js-file-line">4.2.4.  Agent Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L1222" class="blob-num js-line-number" data-line-number="1222"></td>
        <td id="LC1222" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1223" class="blob-num js-line-number" data-line-number="1223"></td>
        <td id="LC1223" class="blob-code js-file-line">   Editor&#39;s note -- Need to add this section.</td>
      </tr>
      <tr>
        <td id="L1224" class="blob-num js-line-number" data-line-number="1224"></td>
        <td id="LC1224" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1225" class="blob-num js-line-number" data-line-number="1225"></td>
        <td id="LC1225" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1226" class="blob-num js-line-number" data-line-number="1226"></td>
        <td id="LC1226" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1227" class="blob-num js-line-number" data-line-number="1227"></td>
        <td id="LC1227" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1228" class="blob-num js-line-number" data-line-number="1228"></td>
        <td id="LC1228" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1229" class="blob-num js-line-number" data-line-number="1229"></td>
        <td id="LC1229" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1230" class="blob-num js-line-number" data-line-number="1230"></td>
        <td id="LC1230" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1231" class="blob-num js-line-number" data-line-number="1231"></td>
        <td id="LC1231" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1232" class="blob-num js-line-number" data-line-number="1232"></td>
        <td id="LC1232" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 22]</td>
      </tr>
      <tr>
        <td id="L1233" class="blob-num js-line-number" data-line-number="1233"></td>
        <td id="LC1233" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1234" class="blob-num js-line-number" data-line-number="1234"></td>
        <td id="LC1234" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1235" class="blob-num js-line-number" data-line-number="1235"></td>
        <td id="LC1235" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1236" class="blob-num js-line-number" data-line-number="1236"></td>
        <td id="LC1236" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1237" class="blob-num js-line-number" data-line-number="1237"></td>
        <td id="LC1237" class="blob-code js-file-line">4.3.  Protocol Extensibility (Normative)</td>
      </tr>
      <tr>
        <td id="L1238" class="blob-num js-line-number" data-line-number="1238"></td>
        <td id="LC1238" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1239" class="blob-num js-line-number" data-line-number="1239"></td>
        <td id="LC1239" class="blob-code js-file-line">   The overload control solution can be extended, e.g. with new traffic</td>
      </tr>
      <tr>
        <td id="L1240" class="blob-num js-line-number" data-line-number="1240"></td>
        <td id="LC1240" class="blob-code js-file-line">   abatement algorithms, new report types or other new functionality.</td>
      </tr>
      <tr>
        <td id="L1241" class="blob-num js-line-number" data-line-number="1241"></td>
        <td id="LC1241" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1242" class="blob-num js-line-number" data-line-number="1242"></td>
        <td id="LC1242" class="blob-code js-file-line">   When defining a new extension a new feature bit MUST be defined for</td>
      </tr>
      <tr>
        <td id="L1243" class="blob-num js-line-number" data-line-number="1243"></td>
        <td id="LC1243" class="blob-code js-file-line">   the OC-Feature-Vector.  This feature bit is used to communicate</td>
      </tr>
      <tr>
        <td id="L1244" class="blob-num js-line-number" data-line-number="1244"></td>
        <td id="LC1244" class="blob-code js-file-line">   support for the new feature.</td>
      </tr>
      <tr>
        <td id="L1245" class="blob-num js-line-number" data-line-number="1245"></td>
        <td id="LC1245" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1246" class="blob-num js-line-number" data-line-number="1246"></td>
        <td id="LC1246" class="blob-code js-file-line">   The extention may also define new AVPs for use in DOIC Capability</td>
      </tr>
      <tr>
        <td id="L1247" class="blob-num js-line-number" data-line-number="1247"></td>
        <td id="LC1247" class="blob-code js-file-line">   Anouncement and for use in DOIC Overload reporting.  These new AVP</td>
      </tr>
      <tr>
        <td id="L1248" class="blob-num js-line-number" data-line-number="1248"></td>
        <td id="LC1248" class="blob-code js-file-line">   should be defined to be extensions to the OC-Supported-Features and</td>
      </tr>
      <tr>
        <td id="L1249" class="blob-num js-line-number" data-line-number="1249"></td>
        <td id="LC1249" class="blob-code js-file-line">   OC-OLR AVPs defined in this document.</td>
      </tr>
      <tr>
        <td id="L1250" class="blob-num js-line-number" data-line-number="1250"></td>
        <td id="LC1250" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1251" class="blob-num js-line-number" data-line-number="1251"></td>
        <td id="LC1251" class="blob-code js-file-line">   It should be noted that [RFC6733] defined Grouped AVP extension</td>
      </tr>
      <tr>
        <td id="L1252" class="blob-num js-line-number" data-line-number="1252"></td>
        <td id="LC1252" class="blob-code js-file-line">   mechanisms apply.  This allows, for example, defining a new feature</td>
      </tr>
      <tr>
        <td id="L1253" class="blob-num js-line-number" data-line-number="1253"></td>
        <td id="LC1253" class="blob-code js-file-line">   that is mandatory to be understood even when piggybacked on an</td>
      </tr>
      <tr>
        <td id="L1254" class="blob-num js-line-number" data-line-number="1254"></td>
        <td id="LC1254" class="blob-code js-file-line">   existing applications.  More specifically, the sub-AVPs inside the</td>
      </tr>
      <tr>
        <td id="L1255" class="blob-num js-line-number" data-line-number="1255"></td>
        <td id="LC1255" class="blob-code js-file-line">   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.</td>
      </tr>
      <tr>
        <td id="L1256" class="blob-num js-line-number" data-line-number="1256"></td>
        <td id="LC1256" class="blob-code js-file-line">   However, when overload control AVPs are piggybacked on top of an</td>
      </tr>
      <tr>
        <td id="L1257" class="blob-num js-line-number" data-line-number="1257"></td>
        <td id="LC1257" class="blob-code js-file-line">   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.</td>
      </tr>
      <tr>
        <td id="L1258" class="blob-num js-line-number" data-line-number="1258"></td>
        <td id="LC1258" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1259" class="blob-num js-line-number" data-line-number="1259"></td>
        <td id="LC1259" class="blob-code js-file-line">   The handling of feature bits in the OC-Feature-Vector AVP that are</td>
      </tr>
      <tr>
        <td id="L1260" class="blob-num js-line-number" data-line-number="1260"></td>
        <td id="LC1260" class="blob-code js-file-line">   not associated with overload abatement algorithms MUST be specified</td>
      </tr>
      <tr>
        <td id="L1261" class="blob-num js-line-number" data-line-number="1261"></td>
        <td id="LC1261" class="blob-code js-file-line">   by the extensions that define the features.</td>
      </tr>
      <tr>
        <td id="L1262" class="blob-num js-line-number" data-line-number="1262"></td>
        <td id="LC1262" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1263" class="blob-num js-line-number" data-line-number="1263"></td>
        <td id="LC1263" class="blob-code js-file-line">   When defining new report type values, the corresponding specification</td>
      </tr>
      <tr>
        <td id="L1264" class="blob-num js-line-number" data-line-number="1264"></td>
        <td id="LC1264" class="blob-code js-file-line">   MUST define the semantics of the new report types and how they affect</td>
      </tr>
      <tr>
        <td id="L1265" class="blob-num js-line-number" data-line-number="1265"></td>
        <td id="LC1265" class="blob-code js-file-line">   the OC-OLR AVP handling.  The specification MUST also reserve a</td>
      </tr>
      <tr>
        <td id="L1266" class="blob-num js-line-number" data-line-number="1266"></td>
        <td id="LC1266" class="blob-code js-file-line">   corresponding new feature, see the OC-Supported-Features and OC-</td>
      </tr>
      <tr>
        <td id="L1267" class="blob-num js-line-number" data-line-number="1267"></td>
        <td id="LC1267" class="blob-code js-file-line">   Feature-Vector AVPs.</td>
      </tr>
      <tr>
        <td id="L1268" class="blob-num js-line-number" data-line-number="1268"></td>
        <td id="LC1268" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1269" class="blob-num js-line-number" data-line-number="1269"></td>
        <td id="LC1269" class="blob-code js-file-line">   The OC-OLR AVP can be expanded with optional sub-AVPs only if a</td>
      </tr>
      <tr>
        <td id="L1270" class="blob-num js-line-number" data-line-number="1270"></td>
        <td id="LC1270" class="blob-code js-file-line">   legacy implementation can safely ignore them without breaking</td>
      </tr>
      <tr>
        <td id="L1271" class="blob-num js-line-number" data-line-number="1271"></td>
        <td id="LC1271" class="blob-code js-file-line">   backward compatibility for the given OC-Report-Type AVP value implied</td>
      </tr>
      <tr>
        <td id="L1272" class="blob-num js-line-number" data-line-number="1272"></td>
        <td id="LC1272" class="blob-code js-file-line">   report handling semantics.  If the new sub-AVPs imply new semantics</td>
      </tr>
      <tr>
        <td id="L1273" class="blob-num js-line-number" data-line-number="1273"></td>
        <td id="LC1273" class="blob-code js-file-line">   for handling the indicated report type, then a new OC-Report-Type AVP</td>
      </tr>
      <tr>
        <td id="L1274" class="blob-num js-line-number" data-line-number="1274"></td>
        <td id="LC1274" class="blob-code js-file-line">   value MUST be defined.</td>
      </tr>
      <tr>
        <td id="L1275" class="blob-num js-line-number" data-line-number="1275"></td>
        <td id="LC1275" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1276" class="blob-num js-line-number" data-line-number="1276"></td>
        <td id="LC1276" class="blob-code js-file-line">   New features (feature bits in the OC-Feature-Vector AVP) and report</td>
      </tr>
      <tr>
        <td id="L1277" class="blob-num js-line-number" data-line-number="1277"></td>
        <td id="LC1277" class="blob-code js-file-line">   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As</td>
      </tr>
      <tr>
        <td id="L1278" class="blob-num js-line-number" data-line-number="1278"></td>
        <td id="LC1278" class="blob-code js-file-line">   with any Diameter specification, new AVPs MUST also be registered</td>
      </tr>
      <tr>
        <td id="L1279" class="blob-num js-line-number" data-line-number="1279"></td>
        <td id="LC1279" class="blob-code js-file-line">   with IANA.  See Section 8 for the required procedures.</td>
      </tr>
      <tr>
        <td id="L1280" class="blob-num js-line-number" data-line-number="1280"></td>
        <td id="LC1280" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1281" class="blob-num js-line-number" data-line-number="1281"></td>
        <td id="LC1281" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1282" class="blob-num js-line-number" data-line-number="1282"></td>
        <td id="LC1282" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1283" class="blob-num js-line-number" data-line-number="1283"></td>
        <td id="LC1283" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1284" class="blob-num js-line-number" data-line-number="1284"></td>
        <td id="LC1284" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1285" class="blob-num js-line-number" data-line-number="1285"></td>
        <td id="LC1285" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1286" class="blob-num js-line-number" data-line-number="1286"></td>
        <td id="LC1286" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1287" class="blob-num js-line-number" data-line-number="1287"></td>
        <td id="LC1287" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1288" class="blob-num js-line-number" data-line-number="1288"></td>
        <td id="LC1288" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 23]</td>
      </tr>
      <tr>
        <td id="L1289" class="blob-num js-line-number" data-line-number="1289"></td>
        <td id="LC1289" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1290" class="blob-num js-line-number" data-line-number="1290"></td>
        <td id="LC1290" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1291" class="blob-num js-line-number" data-line-number="1291"></td>
        <td id="LC1291" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1292" class="blob-num js-line-number" data-line-number="1292"></td>
        <td id="LC1292" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1293" class="blob-num js-line-number" data-line-number="1293"></td>
        <td id="LC1293" class="blob-code js-file-line">5.  Loss Algorithm (Normative)</td>
      </tr>
      <tr>
        <td id="L1294" class="blob-num js-line-number" data-line-number="1294"></td>
        <td id="LC1294" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1295" class="blob-num js-line-number" data-line-number="1295"></td>
        <td id="LC1295" class="blob-code js-file-line">   This section documents the Diameter overload loss abatement</td>
      </tr>
      <tr>
        <td id="L1296" class="blob-num js-line-number" data-line-number="1296"></td>
        <td id="LC1296" class="blob-code js-file-line">   algorithm.</td>
      </tr>
      <tr>
        <td id="L1297" class="blob-num js-line-number" data-line-number="1297"></td>
        <td id="LC1297" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1298" class="blob-num js-line-number" data-line-number="1298"></td>
        <td id="LC1298" class="blob-code js-file-line">5.1.  Overview (Non normative)</td>
      </tr>
      <tr>
        <td id="L1299" class="blob-num js-line-number" data-line-number="1299"></td>
        <td id="LC1299" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1300" class="blob-num js-line-number" data-line-number="1300"></td>
        <td id="LC1300" class="blob-code js-file-line">   The DOIC specification supports the ability for multiple overload</td>
      </tr>
      <tr>
        <td id="L1301" class="blob-num js-line-number" data-line-number="1301"></td>
        <td id="LC1301" class="blob-code js-file-line">   abatement algorithms to be specified.  The abatement algorithm used</td>
      </tr>
      <tr>
        <td id="L1302" class="blob-num js-line-number" data-line-number="1302"></td>
        <td id="LC1302" class="blob-code js-file-line">   for any instance of overload is determined by the Diameter Overload</td>
      </tr>
      <tr>
        <td id="L1303" class="blob-num js-line-number" data-line-number="1303"></td>
        <td id="LC1303" class="blob-code js-file-line">   Capability Announcement process documented in Section 4.1.</td>
      </tr>
      <tr>
        <td id="L1304" class="blob-num js-line-number" data-line-number="1304"></td>
        <td id="LC1304" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1305" class="blob-num js-line-number" data-line-number="1305"></td>
        <td id="LC1305" class="blob-code js-file-line">   The loss algorithm described in this section is the default algorithm</td>
      </tr>
      <tr>
        <td id="L1306" class="blob-num js-line-number" data-line-number="1306"></td>
        <td id="LC1306" class="blob-code js-file-line">   that must be supported by all Diameter nodes that support DOIC.</td>
      </tr>
      <tr>
        <td id="L1307" class="blob-num js-line-number" data-line-number="1307"></td>
        <td id="LC1307" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1308" class="blob-num js-line-number" data-line-number="1308"></td>
        <td id="LC1308" class="blob-code js-file-line">   The loss algorithm is designed to be a straightforward and stateless</td>
      </tr>
      <tr>
        <td id="L1309" class="blob-num js-line-number" data-line-number="1309"></td>
        <td id="LC1309" class="blob-code js-file-line">   overload abatement algorithm.  It is used by reporting nodes to</td>
      </tr>
      <tr>
        <td id="L1310" class="blob-num js-line-number" data-line-number="1310"></td>
        <td id="LC1310" class="blob-code js-file-line">   request a percentage reduction in the amount of traffic sent.  The</td>
      </tr>
      <tr>
        <td id="L1311" class="blob-num js-line-number" data-line-number="1311"></td>
        <td id="LC1311" class="blob-code js-file-line">   traffic impacted by the requested reduction depends on the type of</td>
      </tr>
      <tr>
        <td id="L1312" class="blob-num js-line-number" data-line-number="1312"></td>
        <td id="LC1312" class="blob-code js-file-line">   overload report.</td>
      </tr>
      <tr>
        <td id="L1313" class="blob-num js-line-number" data-line-number="1313"></td>
        <td id="LC1313" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1314" class="blob-num js-line-number" data-line-number="1314"></td>
        <td id="LC1314" class="blob-code js-file-line">   Reporting nodes use a strategy of applying abatement logic to the</td>
      </tr>
      <tr>
        <td id="L1315" class="blob-num js-line-number" data-line-number="1315"></td>
        <td id="LC1315" class="blob-code js-file-line">   requested percentage of request messages sent (or handled in the case</td>
      </tr>
      <tr>
        <td id="L1316" class="blob-num js-line-number" data-line-number="1316"></td>
        <td id="LC1316" class="blob-code js-file-line">   of agents) by the reacting node that are impacted by the overload</td>
      </tr>
      <tr>
        <td id="L1317" class="blob-num js-line-number" data-line-number="1317"></td>
        <td id="LC1317" class="blob-code js-file-line">   report.</td>
      </tr>
      <tr>
        <td id="L1318" class="blob-num js-line-number" data-line-number="1318"></td>
        <td id="LC1318" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1319" class="blob-num js-line-number" data-line-number="1319"></td>
        <td id="LC1319" class="blob-code js-file-line">   From a conceptual level, the logic at the reacting node could be</td>
      </tr>
      <tr>
        <td id="L1320" class="blob-num js-line-number" data-line-number="1320"></td>
        <td id="LC1320" class="blob-code js-file-line">   outlined as follows.  In this discussion assume that the reacting</td>
      </tr>
      <tr>
        <td id="L1321" class="blob-num js-line-number" data-line-number="1321"></td>
        <td id="LC1321" class="blob-code js-file-line">   node is also the sending node.</td>
      </tr>
      <tr>
        <td id="L1322" class="blob-num js-line-number" data-line-number="1322"></td>
        <td id="LC1322" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1323" class="blob-num js-line-number" data-line-number="1323"></td>
        <td id="LC1323" class="blob-code js-file-line">   1.  An overload report is received and the associated overload state</td>
      </tr>
      <tr>
        <td id="L1324" class="blob-num js-line-number" data-line-number="1324"></td>
        <td id="LC1324" class="blob-code js-file-line">       is saved by the reacting node.</td>
      </tr>
      <tr>
        <td id="L1325" class="blob-num js-line-number" data-line-number="1325"></td>
        <td id="LC1325" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1326" class="blob-num js-line-number" data-line-number="1326"></td>
        <td id="LC1326" class="blob-code js-file-line">   2.  A new Diameter request is generated by the application running on</td>
      </tr>
      <tr>
        <td id="L1327" class="blob-num js-line-number" data-line-number="1327"></td>
        <td id="LC1327" class="blob-code js-file-line">       the reacting node.</td>
      </tr>
      <tr>
        <td id="L1328" class="blob-num js-line-number" data-line-number="1328"></td>
        <td id="LC1328" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1329" class="blob-num js-line-number" data-line-number="1329"></td>
        <td id="LC1329" class="blob-code js-file-line">   3.  The reacting node determines that an active overload report</td>
      </tr>
      <tr>
        <td id="L1330" class="blob-num js-line-number" data-line-number="1330"></td>
        <td id="LC1330" class="blob-code js-file-line">       applies to the request.</td>
      </tr>
      <tr>
        <td id="L1331" class="blob-num js-line-number" data-line-number="1331"></td>
        <td id="LC1331" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1332" class="blob-num js-line-number" data-line-number="1332"></td>
        <td id="LC1332" class="blob-code js-file-line">   4.  The reacting node determines if abatement should be applied to</td>
      </tr>
      <tr>
        <td id="L1333" class="blob-num js-line-number" data-line-number="1333"></td>
        <td id="LC1333" class="blob-code js-file-line">       the request.  One approach that could be taken would be to select</td>
      </tr>
      <tr>
        <td id="L1334" class="blob-num js-line-number" data-line-number="1334"></td>
        <td id="LC1334" class="blob-code js-file-line">       a random number between 1 and 100.  If the random number is less</td>
      </tr>
      <tr>
        <td id="L1335" class="blob-num js-line-number" data-line-number="1335"></td>
        <td id="LC1335" class="blob-code js-file-line">       than the indicated reduction percentage then the request is given</td>
      </tr>
      <tr>
        <td id="L1336" class="blob-num js-line-number" data-line-number="1336"></td>
        <td id="LC1336" class="blob-code js-file-line">       abatement treatment, otherwise the request is given normal</td>
      </tr>
      <tr>
        <td id="L1337" class="blob-num js-line-number" data-line-number="1337"></td>
        <td id="LC1337" class="blob-code js-file-line">       routing treatment.</td>
      </tr>
      <tr>
        <td id="L1338" class="blob-num js-line-number" data-line-number="1338"></td>
        <td id="LC1338" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1339" class="blob-num js-line-number" data-line-number="1339"></td>
        <td id="LC1339" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1340" class="blob-num js-line-number" data-line-number="1340"></td>
        <td id="LC1340" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1341" class="blob-num js-line-number" data-line-number="1341"></td>
        <td id="LC1341" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1342" class="blob-num js-line-number" data-line-number="1342"></td>
        <td id="LC1342" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1343" class="blob-num js-line-number" data-line-number="1343"></td>
        <td id="LC1343" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1344" class="blob-num js-line-number" data-line-number="1344"></td>
        <td id="LC1344" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 24]</td>
      </tr>
      <tr>
        <td id="L1345" class="blob-num js-line-number" data-line-number="1345"></td>
        <td id="LC1345" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1346" class="blob-num js-line-number" data-line-number="1346"></td>
        <td id="LC1346" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1347" class="blob-num js-line-number" data-line-number="1347"></td>
        <td id="LC1347" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1348" class="blob-num js-line-number" data-line-number="1348"></td>
        <td id="LC1348" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1349" class="blob-num js-line-number" data-line-number="1349"></td>
        <td id="LC1349" class="blob-code js-file-line">5.2.  Use of OC-Reduction-Percentage AVP</td>
      </tr>
      <tr>
        <td id="L1350" class="blob-num js-line-number" data-line-number="1350"></td>
        <td id="LC1350" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1351" class="blob-num js-line-number" data-line-number="1351"></td>
        <td id="LC1351" class="blob-code js-file-line">   A reporting node using the loss algorithm must use the OC-Reduction-</td>
      </tr>
      <tr>
        <td id="L1352" class="blob-num js-line-number" data-line-number="1352"></td>
        <td id="LC1352" class="blob-code js-file-line">   Percentage AVP (Section 6.7 to indicated the desired percentage of</td>
      </tr>
      <tr>
        <td id="L1353" class="blob-num js-line-number" data-line-number="1353"></td>
        <td id="LC1353" class="blob-code js-file-line">   traffic reduction.)</td>
      </tr>
      <tr>
        <td id="L1354" class="blob-num js-line-number" data-line-number="1354"></td>
        <td id="LC1354" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1355" class="blob-num js-line-number" data-line-number="1355"></td>
        <td id="LC1355" class="blob-code js-file-line">      Editor&#39;s note: The above duplicates what is in the OC-Reduction-</td>
      </tr>
      <tr>
        <td id="L1356" class="blob-num js-line-number" data-line-number="1356"></td>
        <td id="LC1356" class="blob-code js-file-line">      Percentage AVP section can probably be removed.</td>
      </tr>
      <tr>
        <td id="L1357" class="blob-num js-line-number" data-line-number="1357"></td>
        <td id="LC1357" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1358" class="blob-num js-line-number" data-line-number="1358"></td>
        <td id="LC1358" class="blob-code js-file-line">5.3.  Reporting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L1359" class="blob-num js-line-number" data-line-number="1359"></td>
        <td id="LC1359" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1360" class="blob-num js-line-number" data-line-number="1360"></td>
        <td id="LC1360" class="blob-code js-file-line">   The method a reporting nodes uses to determine the amount of traffic</td>
      </tr>
      <tr>
        <td id="L1361" class="blob-num js-line-number" data-line-number="1361"></td>
        <td id="LC1361" class="blob-code js-file-line">   reduction required to address an overload condition is an</td>
      </tr>
      <tr>
        <td id="L1362" class="blob-num js-line-number" data-line-number="1362"></td>
        <td id="LC1362" class="blob-code js-file-line">   implementation decision.</td>
      </tr>
      <tr>
        <td id="L1363" class="blob-num js-line-number" data-line-number="1363"></td>
        <td id="LC1363" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1364" class="blob-num js-line-number" data-line-number="1364"></td>
        <td id="LC1364" class="blob-code js-file-line">   When a reporting node that has selected the loss abatement algorithm</td>
      </tr>
      <tr>
        <td id="L1365" class="blob-num js-line-number" data-line-number="1365"></td>
        <td id="LC1365" class="blob-code js-file-line">   determines the need to request a traffic reduction it must include an</td>
      </tr>
      <tr>
        <td id="L1366" class="blob-num js-line-number" data-line-number="1366"></td>
        <td id="LC1366" class="blob-code js-file-line">   OC-OLR AVP in all response messages.</td>
      </tr>
      <tr>
        <td id="L1367" class="blob-num js-line-number" data-line-number="1367"></td>
        <td id="LC1367" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1368" class="blob-num js-line-number" data-line-number="1368"></td>
        <td id="LC1368" class="blob-code js-file-line">   The reporting node must indicate a percentage reduction in the OC-</td>
      </tr>
      <tr>
        <td id="L1369" class="blob-num js-line-number" data-line-number="1369"></td>
        <td id="LC1369" class="blob-code js-file-line">   Reduction-Percentage AVP.</td>
      </tr>
      <tr>
        <td id="L1370" class="blob-num js-line-number" data-line-number="1370"></td>
        <td id="LC1370" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1371" class="blob-num js-line-number" data-line-number="1371"></td>
        <td id="LC1371" class="blob-code js-file-line">   The reporting node may change the reduction percentage in subsequent</td>
      </tr>
      <tr>
        <td id="L1372" class="blob-num js-line-number" data-line-number="1372"></td>
        <td id="LC1372" class="blob-code js-file-line">   overload reports.  When doing so the reporting node must conform to</td>
      </tr>
      <tr>
        <td id="L1373" class="blob-num js-line-number" data-line-number="1373"></td>
        <td id="LC1373" class="blob-code js-file-line">   overload report handing specified in Section 4.2.3.</td>
      </tr>
      <tr>
        <td id="L1374" class="blob-num js-line-number" data-line-number="1374"></td>
        <td id="LC1374" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1375" class="blob-num js-line-number" data-line-number="1375"></td>
        <td id="LC1375" class="blob-code js-file-line">   When the reporting node determines it no longer needs a reduction in</td>
      </tr>
      <tr>
        <td id="L1376" class="blob-num js-line-number" data-line-number="1376"></td>
        <td id="LC1376" class="blob-code js-file-line">   traffic the reporting node should send an overload report indicating</td>
      </tr>
      <tr>
        <td id="L1377" class="blob-num js-line-number" data-line-number="1377"></td>
        <td id="LC1377" class="blob-code js-file-line">   the overload report is no longer valid, as specified in</td>
      </tr>
      <tr>
        <td id="L1378" class="blob-num js-line-number" data-line-number="1378"></td>
        <td id="LC1378" class="blob-code js-file-line">   Section 4.2.3.</td>
      </tr>
      <tr>
        <td id="L1379" class="blob-num js-line-number" data-line-number="1379"></td>
        <td id="LC1379" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1380" class="blob-num js-line-number" data-line-number="1380"></td>
        <td id="LC1380" class="blob-code js-file-line">5.4.  Reacting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L1381" class="blob-num js-line-number" data-line-number="1381"></td>
        <td id="LC1381" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1382" class="blob-num js-line-number" data-line-number="1382"></td>
        <td id="LC1382" class="blob-code js-file-line">   The method a reacting node uses to determine which request messages</td>
      </tr>
      <tr>
        <td id="L1383" class="blob-num js-line-number" data-line-number="1383"></td>
        <td id="LC1383" class="blob-code js-file-line">   are given abatement treatment is an implementation decision.</td>
      </tr>
      <tr>
        <td id="L1384" class="blob-num js-line-number" data-line-number="1384"></td>
        <td id="LC1384" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1385" class="blob-num js-line-number" data-line-number="1385"></td>
        <td id="LC1385" class="blob-code js-file-line">   When receiving an OC-OLR in an answer message where the algorithm</td>
      </tr>
      <tr>
        <td id="L1386" class="blob-num js-line-number" data-line-number="1386"></td>
        <td id="LC1386" class="blob-code js-file-line">   indicated in the OC-Supported-Features AVP is the loss algorithm, the</td>
      </tr>
      <tr>
        <td id="L1387" class="blob-num js-line-number" data-line-number="1387"></td>
        <td id="LC1387" class="blob-code js-file-line">   reacting node must attempt to apply abatement treatment to the</td>
      </tr>
      <tr>
        <td id="L1388" class="blob-num js-line-number" data-line-number="1388"></td>
        <td id="LC1388" class="blob-code js-file-line">   requested percentage of request messages sent.</td>
      </tr>
      <tr>
        <td id="L1389" class="blob-num js-line-number" data-line-number="1389"></td>
        <td id="LC1389" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1390" class="blob-num js-line-number" data-line-number="1390"></td>
        <td id="LC1390" class="blob-code js-file-line">      Note: the loss algorithm is a stateless algorithm.  As a result,</td>
      </tr>
      <tr>
        <td id="L1391" class="blob-num js-line-number" data-line-number="1391"></td>
        <td id="LC1391" class="blob-code js-file-line">      the reacting node does not guarantee that there will be an</td>
      </tr>
      <tr>
        <td id="L1392" class="blob-num js-line-number" data-line-number="1392"></td>
        <td id="LC1392" class="blob-code js-file-line">      absolute reduction in traffic sent.  Rather, it guarantees that</td>
      </tr>
      <tr>
        <td id="L1393" class="blob-num js-line-number" data-line-number="1393"></td>
        <td id="LC1393" class="blob-code js-file-line">      the requested percentage of new requests will be given abatement</td>
      </tr>
      <tr>
        <td id="L1394" class="blob-num js-line-number" data-line-number="1394"></td>
        <td id="LC1394" class="blob-code js-file-line">      treatment.</td>
      </tr>
      <tr>
        <td id="L1395" class="blob-num js-line-number" data-line-number="1395"></td>
        <td id="LC1395" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1396" class="blob-num js-line-number" data-line-number="1396"></td>
        <td id="LC1396" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1397" class="blob-num js-line-number" data-line-number="1397"></td>
        <td id="LC1397" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1398" class="blob-num js-line-number" data-line-number="1398"></td>
        <td id="LC1398" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1399" class="blob-num js-line-number" data-line-number="1399"></td>
        <td id="LC1399" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1400" class="blob-num js-line-number" data-line-number="1400"></td>
        <td id="LC1400" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 25]</td>
      </tr>
      <tr>
        <td id="L1401" class="blob-num js-line-number" data-line-number="1401"></td>
        <td id="LC1401" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1402" class="blob-num js-line-number" data-line-number="1402"></td>
        <td id="LC1402" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1403" class="blob-num js-line-number" data-line-number="1403"></td>
        <td id="LC1403" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1404" class="blob-num js-line-number" data-line-number="1404"></td>
        <td id="LC1404" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1405" class="blob-num js-line-number" data-line-number="1405"></td>
        <td id="LC1405" class="blob-code js-file-line">   If reacting node comes out of the 100 percent traffic reduction as a</td>
      </tr>
      <tr>
        <td id="L1406" class="blob-num js-line-number" data-line-number="1406"></td>
        <td id="LC1406" class="blob-code js-file-line">   result of the overload report timing out, the following concerns are</td>
      </tr>
      <tr>
        <td id="L1407" class="blob-num js-line-number" data-line-number="1407"></td>
        <td id="LC1407" class="blob-code js-file-line">   RECOMMENDED to be applied.  The reacting node sending the traffic</td>
      </tr>
      <tr>
        <td id="L1408" class="blob-num js-line-number" data-line-number="1408"></td>
        <td id="LC1408" class="blob-code js-file-line">   should be conservative and, for example, first send &quot;probe&quot; messages</td>
      </tr>
      <tr>
        <td id="L1409" class="blob-num js-line-number" data-line-number="1409"></td>
        <td id="LC1409" class="blob-code js-file-line">   to learn the overload condition of the overloaded node before</td>
      </tr>
      <tr>
        <td id="L1410" class="blob-num js-line-number" data-line-number="1410"></td>
        <td id="LC1410" class="blob-code js-file-line">   converging to any traffic amount/rate decided by the sender.  Similar</td>
      </tr>
      <tr>
        <td id="L1411" class="blob-num js-line-number" data-line-number="1411"></td>
        <td id="LC1411" class="blob-code js-file-line">   concerns apply in all cases when the overload report times out unless</td>
      </tr>
      <tr>
        <td id="L1412" class="blob-num js-line-number" data-line-number="1412"></td>
        <td id="LC1412" class="blob-code js-file-line">   the previous overload report stated 0 percent reduction.</td>
      </tr>
      <tr>
        <td id="L1413" class="blob-num js-line-number" data-line-number="1413"></td>
        <td id="LC1413" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1414" class="blob-num js-line-number" data-line-number="1414"></td>
        <td id="LC1414" class="blob-code js-file-line">      Editor&#39;s note: Need to add additional guidance to slowly increase</td>
      </tr>
      <tr>
        <td id="L1415" class="blob-num js-line-number" data-line-number="1415"></td>
        <td id="LC1415" class="blob-code js-file-line">      the rate of traffic sent to avoid a sudden spike in traffic, as</td>
      </tr>
      <tr>
        <td id="L1416" class="blob-num js-line-number" data-line-number="1416"></td>
        <td id="LC1416" class="blob-code js-file-line">      the spike in traffic could result in oscillation of the need for</td>
      </tr>
      <tr>
        <td id="L1417" class="blob-num js-line-number" data-line-number="1417"></td>
        <td id="LC1417" class="blob-code js-file-line">      overload control.</td>
      </tr>
      <tr>
        <td id="L1418" class="blob-num js-line-number" data-line-number="1418"></td>
        <td id="LC1418" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1419" class="blob-num js-line-number" data-line-number="1419"></td>
        <td id="LC1419" class="blob-code js-file-line">   If the reacting node does not receive a an OLR in messages sent to</td>
      </tr>
      <tr>
        <td id="L1420" class="blob-num js-line-number" data-line-number="1420"></td>
        <td id="LC1420" class="blob-code js-file-line">   the formally overloaded node then the reacting node should slowly</td>
      </tr>
      <tr>
        <td id="L1421" class="blob-num js-line-number" data-line-number="1421"></td>
        <td id="LC1421" class="blob-code js-file-line">   increase the rate of traffic sent to the overloaded node.</td>
      </tr>
      <tr>
        <td id="L1422" class="blob-num js-line-number" data-line-number="1422"></td>
        <td id="LC1422" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1423" class="blob-num js-line-number" data-line-number="1423"></td>
        <td id="LC1423" class="blob-code js-file-line">   It is suggested that the reacting node decrease the amount of traffic</td>
      </tr>
      <tr>
        <td id="L1424" class="blob-num js-line-number" data-line-number="1424"></td>
        <td id="LC1424" class="blob-code js-file-line">   given abatement treatment by 20% each second until the reduction is</td>
      </tr>
      <tr>
        <td id="L1425" class="blob-num js-line-number" data-line-number="1425"></td>
        <td id="LC1425" class="blob-code js-file-line">   completely removed and no traffic is given abatement treatment.</td>
      </tr>
      <tr>
        <td id="L1426" class="blob-num js-line-number" data-line-number="1426"></td>
        <td id="LC1426" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1427" class="blob-num js-line-number" data-line-number="1427"></td>
        <td id="LC1427" class="blob-code js-file-line">      The goal of this behavior is to reduce the probability of overload</td>
      </tr>
      <tr>
        <td id="L1428" class="blob-num js-line-number" data-line-number="1428"></td>
        <td id="LC1428" class="blob-code js-file-line">      condition thrashing where an immediate transition from 100%</td>
      </tr>
      <tr>
        <td id="L1429" class="blob-num js-line-number" data-line-number="1429"></td>
        <td id="LC1429" class="blob-code js-file-line">      reduction to 0% reduction results in the reporting node moving</td>
      </tr>
      <tr>
        <td id="L1430" class="blob-num js-line-number" data-line-number="1430"></td>
        <td id="LC1430" class="blob-code js-file-line">      quickly back into an overload condition.</td>
      </tr>
      <tr>
        <td id="L1431" class="blob-num js-line-number" data-line-number="1431"></td>
        <td id="LC1431" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1432" class="blob-num js-line-number" data-line-number="1432"></td>
        <td id="LC1432" class="blob-code js-file-line">6.  Attribute Value Pairs (Normative)</td>
      </tr>
      <tr>
        <td id="L1433" class="blob-num js-line-number" data-line-number="1433"></td>
        <td id="LC1433" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1434" class="blob-num js-line-number" data-line-number="1434"></td>
        <td id="LC1434" class="blob-code js-file-line">   This section describes the encoding and semantics of the Diameter</td>
      </tr>
      <tr>
        <td id="L1435" class="blob-num js-line-number" data-line-number="1435"></td>
        <td id="LC1435" class="blob-code js-file-line">   Overload Indication Attribute Value Pairs (AVPs) defined in this</td>
      </tr>
      <tr>
        <td id="L1436" class="blob-num js-line-number" data-line-number="1436"></td>
        <td id="LC1436" class="blob-code js-file-line">   document.</td>
      </tr>
      <tr>
        <td id="L1437" class="blob-num js-line-number" data-line-number="1437"></td>
        <td id="LC1437" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1438" class="blob-num js-line-number" data-line-number="1438"></td>
        <td id="LC1438" class="blob-code js-file-line">   When added to existing commands, both OC-Feature-Vector and OC-OLR</td>
      </tr>
      <tr>
        <td id="L1439" class="blob-num js-line-number" data-line-number="1439"></td>
        <td id="LC1439" class="blob-code js-file-line">   AVPs SHOULD have the M-bit flag cleared to avoid backward</td>
      </tr>
      <tr>
        <td id="L1440" class="blob-num js-line-number" data-line-number="1440"></td>
        <td id="LC1440" class="blob-code js-file-line">   compatibility issues.</td>
      </tr>
      <tr>
        <td id="L1441" class="blob-num js-line-number" data-line-number="1441"></td>
        <td id="LC1441" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1442" class="blob-num js-line-number" data-line-number="1442"></td>
        <td id="LC1442" class="blob-code js-file-line">   A new application specification can incorporate the overload control</td>
      </tr>
      <tr>
        <td id="L1443" class="blob-num js-line-number" data-line-number="1443"></td>
        <td id="LC1443" class="blob-code js-file-line">   mechanism specified in this document by making it mandatory to</td>
      </tr>
      <tr>
        <td id="L1444" class="blob-num js-line-number" data-line-number="1444"></td>
        <td id="LC1444" class="blob-code js-file-line">   implement for the application and referencing this specification</td>
      </tr>
      <tr>
        <td id="L1445" class="blob-num js-line-number" data-line-number="1445"></td>
        <td id="LC1445" class="blob-code js-file-line">   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs</td>
      </tr>
      <tr>
        <td id="L1446" class="blob-num js-line-number" data-line-number="1446"></td>
        <td id="LC1446" class="blob-code js-file-line">   reused in newly defined Diameter applications SHOULD have the M-bit</td>
      </tr>
      <tr>
        <td id="L1447" class="blob-num js-line-number" data-line-number="1447"></td>
        <td id="LC1447" class="blob-code js-file-line">   flag set.  However, it is the responsibility of the Diameter</td>
      </tr>
      <tr>
        <td id="L1448" class="blob-num js-line-number" data-line-number="1448"></td>
        <td id="LC1448" class="blob-code js-file-line">   application designers to define how overload control mechanisms works</td>
      </tr>
      <tr>
        <td id="L1449" class="blob-num js-line-number" data-line-number="1449"></td>
        <td id="LC1449" class="blob-code js-file-line">   on that application.</td>
      </tr>
      <tr>
        <td id="L1450" class="blob-num js-line-number" data-line-number="1450"></td>
        <td id="LC1450" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1451" class="blob-num js-line-number" data-line-number="1451"></td>
        <td id="LC1451" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1452" class="blob-num js-line-number" data-line-number="1452"></td>
        <td id="LC1452" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1453" class="blob-num js-line-number" data-line-number="1453"></td>
        <td id="LC1453" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1454" class="blob-num js-line-number" data-line-number="1454"></td>
        <td id="LC1454" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1455" class="blob-num js-line-number" data-line-number="1455"></td>
        <td id="LC1455" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1456" class="blob-num js-line-number" data-line-number="1456"></td>
        <td id="LC1456" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 26]</td>
      </tr>
      <tr>
        <td id="L1457" class="blob-num js-line-number" data-line-number="1457"></td>
        <td id="LC1457" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1458" class="blob-num js-line-number" data-line-number="1458"></td>
        <td id="LC1458" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1459" class="blob-num js-line-number" data-line-number="1459"></td>
        <td id="LC1459" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1460" class="blob-num js-line-number" data-line-number="1460"></td>
        <td id="LC1460" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1461" class="blob-num js-line-number" data-line-number="1461"></td>
        <td id="LC1461" class="blob-code js-file-line">6.1.  OC-Supported-Features AVP</td>
      </tr>
      <tr>
        <td id="L1462" class="blob-num js-line-number" data-line-number="1462"></td>
        <td id="LC1462" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1463" class="blob-num js-line-number" data-line-number="1463"></td>
        <td id="LC1463" class="blob-code js-file-line">   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and</td>
      </tr>
      <tr>
        <td id="L1464" class="blob-num js-line-number" data-line-number="1464"></td>
        <td id="LC1464" class="blob-code js-file-line">   serves for two purposes.  First, it announces a node&#39;s support for</td>
      </tr>
      <tr>
        <td id="L1465" class="blob-num js-line-number" data-line-number="1465"></td>
        <td id="LC1465" class="blob-code js-file-line">   the DOIC in general.  Second, it contains the description of the</td>
      </tr>
      <tr>
        <td id="L1466" class="blob-num js-line-number" data-line-number="1466"></td>
        <td id="LC1466" class="blob-code js-file-line">   supported DOIC features of the sending node.  The OC-Supported-</td>
      </tr>
      <tr>
        <td id="L1467" class="blob-num js-line-number" data-line-number="1467"></td>
        <td id="LC1467" class="blob-code js-file-line">   Features AVP MUST be included in every Diameter message a DOIC</td>
      </tr>
      <tr>
        <td id="L1468" class="blob-num js-line-number" data-line-number="1468"></td>
        <td id="LC1468" class="blob-code js-file-line">   supporting node sends.</td>
      </tr>
      <tr>
        <td id="L1469" class="blob-num js-line-number" data-line-number="1469"></td>
        <td id="LC1469" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1470" class="blob-num js-line-number" data-line-number="1470"></td>
        <td id="LC1470" class="blob-code js-file-line">      OC-Supported-Features ::= &lt; AVP Header: TBD1 &gt;</td>
      </tr>
      <tr>
        <td id="L1471" class="blob-num js-line-number" data-line-number="1471"></td>
        <td id="LC1471" class="blob-code js-file-line">                                [ OC-Feature-Vector ]</td>
      </tr>
      <tr>
        <td id="L1472" class="blob-num js-line-number" data-line-number="1472"></td>
        <td id="LC1472" class="blob-code js-file-line">                              * [ AVP ]</td>
      </tr>
      <tr>
        <td id="L1473" class="blob-num js-line-number" data-line-number="1473"></td>
        <td id="LC1473" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1474" class="blob-num js-line-number" data-line-number="1474"></td>
        <td id="LC1474" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1475" class="blob-num js-line-number" data-line-number="1475"></td>
        <td id="LC1475" class="blob-code js-file-line">   The OC-Feature-Vector sub-AVP is used to announce the DOIC features</td>
      </tr>
      <tr>
        <td id="L1476" class="blob-num js-line-number" data-line-number="1476"></td>
        <td id="LC1476" class="blob-code js-file-line">   supported by the DOIC node, in the form of a flag bits field in which</td>
      </tr>
      <tr>
        <td id="L1477" class="blob-num js-line-number" data-line-number="1477"></td>
        <td id="LC1477" class="blob-code js-file-line">   each bit announces one feature or capability supported by the node</td>
      </tr>
      <tr>
        <td id="L1478" class="blob-num js-line-number" data-line-number="1478"></td>
        <td id="LC1478" class="blob-code js-file-line">   (see Section 6.2).  The absence of the OC-Feature-Vector AVP</td>
      </tr>
      <tr>
        <td id="L1479" class="blob-num js-line-number" data-line-number="1479"></td>
        <td id="LC1479" class="blob-code js-file-line">   indicates that only the default traffic abatement algorithm described</td>
      </tr>
      <tr>
        <td id="L1480" class="blob-num js-line-number" data-line-number="1480"></td>
        <td id="LC1480" class="blob-code js-file-line">   in this specification is supported.</td>
      </tr>
      <tr>
        <td id="L1481" class="blob-num js-line-number" data-line-number="1481"></td>
        <td id="LC1481" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1482" class="blob-num js-line-number" data-line-number="1482"></td>
        <td id="LC1482" class="blob-code js-file-line">   A reacting node includes this AVP to indicate its capabilities to a</td>
      </tr>
      <tr>
        <td id="L1483" class="blob-num js-line-number" data-line-number="1483"></td>
        <td id="LC1483" class="blob-code js-file-line">   reporting node.  For example, the reacting node may indicate which</td>
      </tr>
      <tr>
        <td id="L1484" class="blob-num js-line-number" data-line-number="1484"></td>
        <td id="LC1484" class="blob-code js-file-line">   (future defined) traffic abatement algorithms it supports in addition</td>
      </tr>
      <tr>
        <td id="L1485" class="blob-num js-line-number" data-line-number="1485"></td>
        <td id="LC1485" class="blob-code js-file-line">   to the default.</td>
      </tr>
      <tr>
        <td id="L1486" class="blob-num js-line-number" data-line-number="1486"></td>
        <td id="LC1486" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1487" class="blob-num js-line-number" data-line-number="1487"></td>
        <td id="LC1487" class="blob-code js-file-line">   During the message exchange the DOIC nodes express their common set</td>
      </tr>
      <tr>
        <td id="L1488" class="blob-num js-line-number" data-line-number="1488"></td>
        <td id="LC1488" class="blob-code js-file-line">   of supported capabilities.  The reacting node includes the OC-</td>
      </tr>
      <tr>
        <td id="L1489" class="blob-num js-line-number" data-line-number="1489"></td>
        <td id="LC1489" class="blob-code js-file-line">   Supported-Features AVP that announces what it supports.  The</td>
      </tr>
      <tr>
        <td id="L1490" class="blob-num js-line-number" data-line-number="1490"></td>
        <td id="LC1490" class="blob-code js-file-line">   reporting node that sends the answer also includes the OC-Supported-</td>
      </tr>
      <tr>
        <td id="L1491" class="blob-num js-line-number" data-line-number="1491"></td>
        <td id="LC1491" class="blob-code js-file-line">   Features AVP that describes the capabilities it supports.  The set of</td>
      </tr>
      <tr>
        <td id="L1492" class="blob-num js-line-number" data-line-number="1492"></td>
        <td id="LC1492" class="blob-code js-file-line">   capabilities advertised by the reporting node depends on local</td>
      </tr>
      <tr>
        <td id="L1493" class="blob-num js-line-number" data-line-number="1493"></td>
        <td id="LC1493" class="blob-code js-file-line">   policies.  At least one of the announced capabilities MUST match.  If</td>
      </tr>
      <tr>
        <td id="L1494" class="blob-num js-line-number" data-line-number="1494"></td>
        <td id="LC1494" class="blob-code js-file-line">   there is no single matching capability the reacting node MUST act as</td>
      </tr>
      <tr>
        <td id="L1495" class="blob-num js-line-number" data-line-number="1495"></td>
        <td id="LC1495" class="blob-code js-file-line">   if it does not implement DOIC and cease inserting any DOIC related</td>
      </tr>
      <tr>
        <td id="L1496" class="blob-num js-line-number" data-line-number="1496"></td>
        <td id="LC1496" class="blob-code js-file-line">   AVPs into any Diameter messages with this specific reacting node.</td>
      </tr>
      <tr>
        <td id="L1497" class="blob-num js-line-number" data-line-number="1497"></td>
        <td id="LC1497" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1498" class="blob-num js-line-number" data-line-number="1498"></td>
        <td id="LC1498" class="blob-code js-file-line">      Editor&#39;s note: The last sentence conflicts with the last sentence</td>
      </tr>
      <tr>
        <td id="L1499" class="blob-num js-line-number" data-line-number="1499"></td>
        <td id="LC1499" class="blob-code js-file-line">      two paragraphs up.  In reality, there will always be at least one</td>
      </tr>
      <tr>
        <td id="L1500" class="blob-num js-line-number" data-line-number="1500"></td>
        <td id="LC1500" class="blob-code js-file-line">      matching capability as all nodes supporting DOIC must support the</td>
      </tr>
      <tr>
        <td id="L1501" class="blob-num js-line-number" data-line-number="1501"></td>
        <td id="LC1501" class="blob-code js-file-line">      loss algorithm.  Suggest removing the last sentence.</td>
      </tr>
      <tr>
        <td id="L1502" class="blob-num js-line-number" data-line-number="1502"></td>
        <td id="LC1502" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1503" class="blob-num js-line-number" data-line-number="1503"></td>
        <td id="LC1503" class="blob-code js-file-line">6.2.  OC-Feature-Vector AVP</td>
      </tr>
      <tr>
        <td id="L1504" class="blob-num js-line-number" data-line-number="1504"></td>
        <td id="LC1504" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1505" class="blob-num js-line-number" data-line-number="1505"></td>
        <td id="LC1505" class="blob-code js-file-line">   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and</td>
      </tr>
      <tr>
        <td id="L1506" class="blob-num js-line-number" data-line-number="1506"></td>
        <td id="LC1506" class="blob-code js-file-line">   contains a 64 bit flags field of announced capabilities of a DOIC</td>
      </tr>
      <tr>
        <td id="L1507" class="blob-num js-line-number" data-line-number="1507"></td>
        <td id="LC1507" class="blob-code js-file-line">   node.  The value of zero (0) is reserved.</td>
      </tr>
      <tr>
        <td id="L1508" class="blob-num js-line-number" data-line-number="1508"></td>
        <td id="LC1508" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1509" class="blob-num js-line-number" data-line-number="1509"></td>
        <td id="LC1509" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1510" class="blob-num js-line-number" data-line-number="1510"></td>
        <td id="LC1510" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1511" class="blob-num js-line-number" data-line-number="1511"></td>
        <td id="LC1511" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1512" class="blob-num js-line-number" data-line-number="1512"></td>
        <td id="LC1512" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 27]</td>
      </tr>
      <tr>
        <td id="L1513" class="blob-num js-line-number" data-line-number="1513"></td>
        <td id="LC1513" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1514" class="blob-num js-line-number" data-line-number="1514"></td>
        <td id="LC1514" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1515" class="blob-num js-line-number" data-line-number="1515"></td>
        <td id="LC1515" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1516" class="blob-num js-line-number" data-line-number="1516"></td>
        <td id="LC1516" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1517" class="blob-num js-line-number" data-line-number="1517"></td>
        <td id="LC1517" class="blob-code js-file-line">   The following capabilities are defined in this document:</td>
      </tr>
      <tr>
        <td id="L1518" class="blob-num js-line-number" data-line-number="1518"></td>
        <td id="LC1518" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1519" class="blob-num js-line-number" data-line-number="1519"></td>
        <td id="LC1519" class="blob-code js-file-line">   OLR_DEFAULT_ALGO (0x0000000000000001)</td>
      </tr>
      <tr>
        <td id="L1520" class="blob-num js-line-number" data-line-number="1520"></td>
        <td id="LC1520" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1521" class="blob-num js-line-number" data-line-number="1521"></td>
        <td id="LC1521" class="blob-code js-file-line">      When this flag is set by the DOIC node it means that the default</td>
      </tr>
      <tr>
        <td id="L1522" class="blob-num js-line-number" data-line-number="1522"></td>
        <td id="LC1522" class="blob-code js-file-line">      traffic abatement (loss) algorithm is supported.</td>
      </tr>
      <tr>
        <td id="L1523" class="blob-num js-line-number" data-line-number="1523"></td>
        <td id="LC1523" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1524" class="blob-num js-line-number" data-line-number="1524"></td>
        <td id="LC1524" class="blob-code js-file-line">6.3.  OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L1525" class="blob-num js-line-number" data-line-number="1525"></td>
        <td id="LC1525" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1526" class="blob-num js-line-number" data-line-number="1526"></td>
        <td id="LC1526" class="blob-code js-file-line">   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the</td>
      </tr>
      <tr>
        <td id="L1527" class="blob-num js-line-number" data-line-number="1527"></td>
        <td id="LC1527" class="blob-code js-file-line">   necessary information to convey an overload report.  The OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L1528" class="blob-num js-line-number" data-line-number="1528"></td>
        <td id="LC1528" class="blob-code js-file-line">   does not explicitly contain all information needed by the reacting</td>
      </tr>
      <tr>
        <td id="L1529" class="blob-num js-line-number" data-line-number="1529"></td>
        <td id="LC1529" class="blob-code js-file-line">   node to decide whether a subsequent request must undergo a throttling</td>
      </tr>
      <tr>
        <td id="L1530" class="blob-num js-line-number" data-line-number="1530"></td>
        <td id="LC1530" class="blob-code js-file-line">   process with the received reduction percentage.  The value of the OC-</td>
      </tr>
      <tr>
        <td id="L1531" class="blob-num js-line-number" data-line-number="1531"></td>
        <td id="LC1531" class="blob-code js-file-line">   Report-Type AVP within the OC-OLR AVP indicates which implicit</td>
      </tr>
      <tr>
        <td id="L1532" class="blob-num js-line-number" data-line-number="1532"></td>
        <td id="LC1532" class="blob-code js-file-line">   information is relevant for this decision (see Section 6.6).  The</td>
      </tr>
      <tr>
        <td id="L1533" class="blob-num js-line-number" data-line-number="1533"></td>
        <td id="LC1533" class="blob-code js-file-line">   application the OC-OLR AVP applies to is the same as the Application-</td>
      </tr>
      <tr>
        <td id="L1534" class="blob-num js-line-number" data-line-number="1534"></td>
        <td id="LC1534" class="blob-code js-file-line">   Id found in the Diameter message header.  The identity the OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L1535" class="blob-num js-line-number" data-line-number="1535"></td>
        <td id="LC1535" class="blob-code js-file-line">   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP</td>
      </tr>
      <tr>
        <td id="L1536" class="blob-num js-line-number" data-line-number="1536"></td>
        <td id="LC1536" class="blob-code js-file-line">   as well) found from the encapsulating Diameter command.  The OC-OLR</td>
      </tr>
      <tr>
        <td id="L1537" class="blob-num js-line-number" data-line-number="1537"></td>
        <td id="LC1537" class="blob-code js-file-line">   AVP is intended to be sent only by a reporting node.</td>
      </tr>
      <tr>
        <td id="L1538" class="blob-num js-line-number" data-line-number="1538"></td>
        <td id="LC1538" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1539" class="blob-num js-line-number" data-line-number="1539"></td>
        <td id="LC1539" class="blob-code js-file-line">      OC-OLR ::= &lt; AVP Header: TBD2 &gt;</td>
      </tr>
      <tr>
        <td id="L1540" class="blob-num js-line-number" data-line-number="1540"></td>
        <td id="LC1540" class="blob-code js-file-line">                 &lt; OC-Sequence-Number &gt;</td>
      </tr>
      <tr>
        <td id="L1541" class="blob-num js-line-number" data-line-number="1541"></td>
        <td id="LC1541" class="blob-code js-file-line">                 &lt; OC-Report-Type &gt;</td>
      </tr>
      <tr>
        <td id="L1542" class="blob-num js-line-number" data-line-number="1542"></td>
        <td id="LC1542" class="blob-code js-file-line">                 [ OC-Reduction-Percentage ]</td>
      </tr>
      <tr>
        <td id="L1543" class="blob-num js-line-number" data-line-number="1543"></td>
        <td id="LC1543" class="blob-code js-file-line">                 [ OC-Validity-Duration ]</td>
      </tr>
      <tr>
        <td id="L1544" class="blob-num js-line-number" data-line-number="1544"></td>
        <td id="LC1544" class="blob-code js-file-line">               * [ AVP ]</td>
      </tr>
      <tr>
        <td id="L1545" class="blob-num js-line-number" data-line-number="1545"></td>
        <td id="LC1545" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1546" class="blob-num js-line-number" data-line-number="1546"></td>
        <td id="LC1546" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1547" class="blob-num js-line-number" data-line-number="1547"></td>
        <td id="LC1547" class="blob-code js-file-line">   The OC-Validity-Duration AVP indicates the validity time of the</td>
      </tr>
      <tr>
        <td id="L1548" class="blob-num js-line-number" data-line-number="1548"></td>
        <td id="LC1548" class="blob-code js-file-line">   overload report associated with a specific sequence number, measured</td>
      </tr>
      <tr>
        <td id="L1549" class="blob-num js-line-number" data-line-number="1549"></td>
        <td id="LC1549" class="blob-code js-file-line">   after reception of the OC-OLR AVP.  The validity time MUST NOT be</td>
      </tr>
      <tr>
        <td id="L1550" class="blob-num js-line-number" data-line-number="1550"></td>
        <td id="LC1550" class="blob-code js-file-line">   updated after reception of subsequent OC-OLR AVPs with the same</td>
      </tr>
      <tr>
        <td id="L1551" class="blob-num js-line-number" data-line-number="1551"></td>
        <td id="LC1551" class="blob-code js-file-line">   sequence number.  The default value for the OC-Validity-Duration AVP</td>
      </tr>
      <tr>
        <td id="L1552" class="blob-num js-line-number" data-line-number="1552"></td>
        <td id="LC1552" class="blob-code js-file-line">   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is</td>
      </tr>
      <tr>
        <td id="L1553" class="blob-num js-line-number" data-line-number="1553"></td>
        <td id="LC1553" class="blob-code js-file-line">   not present in the OC-OLR AVP, the default value applies.</td>
      </tr>
      <tr>
        <td id="L1554" class="blob-num js-line-number" data-line-number="1554"></td>
        <td id="LC1554" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1555" class="blob-num js-line-number" data-line-number="1555"></td>
        <td id="LC1555" class="blob-code js-file-line">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td>
      </tr>
      <tr>
        <td id="L1556" class="blob-num js-line-number" data-line-number="1556"></td>
        <td id="LC1556" class="blob-code js-file-line">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td>
      </tr>
      <tr>
        <td id="L1557" class="blob-num js-line-number" data-line-number="1557"></td>
        <td id="LC1557" class="blob-code js-file-line">   with unknown values SHOULD be silently discarded and the event SHOULD</td>
      </tr>
      <tr>
        <td id="L1558" class="blob-num js-line-number" data-line-number="1558"></td>
        <td id="LC1558" class="blob-code js-file-line">   be logged.</td>
      </tr>
      <tr>
        <td id="L1559" class="blob-num js-line-number" data-line-number="1559"></td>
        <td id="LC1559" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1560" class="blob-num js-line-number" data-line-number="1560"></td>
        <td id="LC1560" class="blob-code js-file-line">      Editor&#39;s note: Need to specify what happens when two reports of</td>
      </tr>
      <tr>
        <td id="L1561" class="blob-num js-line-number" data-line-number="1561"></td>
        <td id="LC1561" class="blob-code js-file-line">      the same type are received.</td>
      </tr>
      <tr>
        <td id="L1562" class="blob-num js-line-number" data-line-number="1562"></td>
        <td id="LC1562" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1563" class="blob-num js-line-number" data-line-number="1563"></td>
        <td id="LC1563" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1564" class="blob-num js-line-number" data-line-number="1564"></td>
        <td id="LC1564" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1565" class="blob-num js-line-number" data-line-number="1565"></td>
        <td id="LC1565" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1566" class="blob-num js-line-number" data-line-number="1566"></td>
        <td id="LC1566" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1567" class="blob-num js-line-number" data-line-number="1567"></td>
        <td id="LC1567" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1568" class="blob-num js-line-number" data-line-number="1568"></td>
        <td id="LC1568" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 28]</td>
      </tr>
      <tr>
        <td id="L1569" class="blob-num js-line-number" data-line-number="1569"></td>
        <td id="LC1569" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1570" class="blob-num js-line-number" data-line-number="1570"></td>
        <td id="LC1570" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1571" class="blob-num js-line-number" data-line-number="1571"></td>
        <td id="LC1571" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1572" class="blob-num js-line-number" data-line-number="1572"></td>
        <td id="LC1572" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1573" class="blob-num js-line-number" data-line-number="1573"></td>
        <td id="LC1573" class="blob-code js-file-line">6.4.  OC-Sequence-Number AVP</td>
      </tr>
      <tr>
        <td id="L1574" class="blob-num js-line-number" data-line-number="1574"></td>
        <td id="LC1574" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1575" class="blob-num js-line-number" data-line-number="1575"></td>
        <td id="LC1575" class="blob-code js-file-line">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td>
      </tr>
      <tr>
        <td id="L1576" class="blob-num js-line-number" data-line-number="1576"></td>
        <td id="LC1576" class="blob-code js-file-line">   Its usage in the context of overload control is described in</td>
      </tr>
      <tr>
        <td id="L1577" class="blob-num js-line-number" data-line-number="1577"></td>
        <td id="LC1577" class="blob-code js-file-line">   Section 4.2.</td>
      </tr>
      <tr>
        <td id="L1578" class="blob-num js-line-number" data-line-number="1578"></td>
        <td id="LC1578" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1579" class="blob-num js-line-number" data-line-number="1579"></td>
        <td id="LC1579" class="blob-code js-file-line">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td>
      </tr>
      <tr>
        <td id="L1580" class="blob-num js-line-number" data-line-number="1580"></td>
        <td id="LC1580" class="blob-code js-file-line">   be used as a non-volatile increasing counter between two DOIC nodes.</td>
      </tr>
      <tr>
        <td id="L1581" class="blob-num js-line-number" data-line-number="1581"></td>
        <td id="LC1581" class="blob-code js-file-line">   The sequence number is only required to be unique between two DOIC</td>
      </tr>
      <tr>
        <td id="L1582" class="blob-num js-line-number" data-line-number="1582"></td>
        <td id="LC1582" class="blob-code js-file-line">   nodes.  Sequence numbers are treated in a uni-directional manner,</td>
      </tr>
      <tr>
        <td id="L1583" class="blob-num js-line-number" data-line-number="1583"></td>
        <td id="LC1583" class="blob-code js-file-line">   i.e. two sequence numbers on each direction between two DOIC nodes</td>
      </tr>
      <tr>
        <td id="L1584" class="blob-num js-line-number" data-line-number="1584"></td>
        <td id="LC1584" class="blob-code js-file-line">   are not related or correlated.</td>
      </tr>
      <tr>
        <td id="L1585" class="blob-num js-line-number" data-line-number="1585"></td>
        <td id="LC1585" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1586" class="blob-num js-line-number" data-line-number="1586"></td>
        <td id="LC1586" class="blob-code js-file-line">   When generating sequence numbers, the new sequence number MUST be</td>
      </tr>
      <tr>
        <td id="L1587" class="blob-num js-line-number" data-line-number="1587"></td>
        <td id="LC1587" class="blob-code js-file-line">   greater than any sequence number in an active overload report</td>
      </tr>
      <tr>
        <td id="L1588" class="blob-num js-line-number" data-line-number="1588"></td>
        <td id="LC1588" class="blob-code js-file-line">   previously sent by the reporting node.  This property MUST hold over</td>
      </tr>
      <tr>
        <td id="L1589" class="blob-num js-line-number" data-line-number="1589"></td>
        <td id="LC1589" class="blob-code js-file-line">   a reboot of the reporting node.</td>
      </tr>
      <tr>
        <td id="L1590" class="blob-num js-line-number" data-line-number="1590"></td>
        <td id="LC1590" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1591" class="blob-num js-line-number" data-line-number="1591"></td>
        <td id="LC1591" class="blob-code js-file-line">6.5.  OC-Validity-Duration AVP</td>
      </tr>
      <tr>
        <td id="L1592" class="blob-num js-line-number" data-line-number="1592"></td>
        <td id="LC1592" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1593" class="blob-num js-line-number" data-line-number="1593"></td>
        <td id="LC1593" class="blob-code js-file-line">   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32</td>
      </tr>
      <tr>
        <td id="L1594" class="blob-num js-line-number" data-line-number="1594"></td>
        <td id="LC1594" class="blob-code js-file-line">   and indicates in seconds the validity time of the overload report.</td>
      </tr>
      <tr>
        <td id="L1595" class="blob-num js-line-number" data-line-number="1595"></td>
        <td id="LC1595" class="blob-code js-file-line">   The number of seconds is measured after reception of the first OC-OLR</td>
      </tr>
      <tr>
        <td id="L1596" class="blob-num js-line-number" data-line-number="1596"></td>
        <td id="LC1596" class="blob-code js-file-line">   AVP with a given value of OC-Sequence-Number AVP.  The default value</td>
      </tr>
      <tr>
        <td id="L1597" class="blob-num js-line-number" data-line-number="1597"></td>
        <td id="LC1597" class="blob-code js-file-line">   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the</td>
      </tr>
      <tr>
        <td id="L1598" class="blob-num js-line-number" data-line-number="1598"></td>
        <td id="LC1598" class="blob-code js-file-line">   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the</td>
      </tr>
      <tr>
        <td id="L1599" class="blob-num js-line-number" data-line-number="1599"></td>
        <td id="LC1599" class="blob-code js-file-line">   default value applies.  Validity duration with values above 86400</td>
      </tr>
      <tr>
        <td id="L1600" class="blob-num js-line-number" data-line-number="1600"></td>
        <td id="LC1600" class="blob-code js-file-line">   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are</td>
      </tr>
      <tr>
        <td id="L1601" class="blob-num js-line-number" data-line-number="1601"></td>
        <td id="LC1601" class="blob-code js-file-line">   treated as if the OC-Validity-Duration AVP were not present and</td>
      </tr>
      <tr>
        <td id="L1602" class="blob-num js-line-number" data-line-number="1602"></td>
        <td id="LC1602" class="blob-code js-file-line">   result in the default value being used.</td>
      </tr>
      <tr>
        <td id="L1603" class="blob-num js-line-number" data-line-number="1603"></td>
        <td id="LC1603" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1604" class="blob-num js-line-number" data-line-number="1604"></td>
        <td id="LC1604" class="blob-code js-file-line">   A timeout of the overload report has specific concerns that need to</td>
      </tr>
      <tr>
        <td id="L1605" class="blob-num js-line-number" data-line-number="1605"></td>
        <td id="LC1605" class="blob-code js-file-line">   be taken into account by the DOIC node acting on the earlier received</td>
      </tr>
      <tr>
        <td id="L1606" class="blob-num js-line-number" data-line-number="1606"></td>
        <td id="LC1606" class="blob-code js-file-line">   overload report(s).  Section 6.7 discusses the impacts of timeout in</td>
      </tr>
      <tr>
        <td id="L1607" class="blob-num js-line-number" data-line-number="1607"></td>
        <td id="LC1607" class="blob-code js-file-line">   the scope of the traffic abatement algorithms.</td>
      </tr>
      <tr>
        <td id="L1608" class="blob-num js-line-number" data-line-number="1608"></td>
        <td id="LC1608" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1609" class="blob-num js-line-number" data-line-number="1609"></td>
        <td id="LC1609" class="blob-code js-file-line">   When a reporting node has recovered from overload, it SHOULD</td>
      </tr>
      <tr>
        <td id="L1610" class="blob-num js-line-number" data-line-number="1610"></td>
        <td id="LC1610" class="blob-code js-file-line">   invalidate any existing overload reports in a timely matter.  This</td>
      </tr>
      <tr>
        <td id="L1611" class="blob-num js-line-number" data-line-number="1611"></td>
        <td id="LC1611" class="blob-code js-file-line">   can be achieved by sending an updated overload report (meaning the</td>
      </tr>
      <tr>
        <td id="L1612" class="blob-num js-line-number" data-line-number="1612"></td>
        <td id="LC1612" class="blob-code js-file-line">   OLR contains a new sequence number) with the OC-Validity-Duration AVP</td>
      </tr>
      <tr>
        <td id="L1613" class="blob-num js-line-number" data-line-number="1613"></td>
        <td id="LC1613" class="blob-code js-file-line">   value set to zero (&quot;0&quot;).  If the overload report is about to expire</td>
      </tr>
      <tr>
        <td id="L1614" class="blob-num js-line-number" data-line-number="1614"></td>
        <td id="LC1614" class="blob-code js-file-line">   naturally, the reporting node MAY choose to simply let it do so.</td>
      </tr>
      <tr>
        <td id="L1615" class="blob-num js-line-number" data-line-number="1615"></td>
        <td id="LC1615" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1616" class="blob-num js-line-number" data-line-number="1616"></td>
        <td id="LC1616" class="blob-code js-file-line">   A reacting node MUST invalidate and remove an overload report that</td>
      </tr>
      <tr>
        <td id="L1617" class="blob-num js-line-number" data-line-number="1617"></td>
        <td id="LC1617" class="blob-code js-file-line">   expires without an explicit overload report containing an OC-</td>
      </tr>
      <tr>
        <td id="L1618" class="blob-num js-line-number" data-line-number="1618"></td>
        <td id="LC1618" class="blob-code js-file-line">   Validity-Duration value set to zero (&quot;0&quot;).</td>
      </tr>
      <tr>
        <td id="L1619" class="blob-num js-line-number" data-line-number="1619"></td>
        <td id="LC1619" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1620" class="blob-num js-line-number" data-line-number="1620"></td>
        <td id="LC1620" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1621" class="blob-num js-line-number" data-line-number="1621"></td>
        <td id="LC1621" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1622" class="blob-num js-line-number" data-line-number="1622"></td>
        <td id="LC1622" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1623" class="blob-num js-line-number" data-line-number="1623"></td>
        <td id="LC1623" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1624" class="blob-num js-line-number" data-line-number="1624"></td>
        <td id="LC1624" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 29]</td>
      </tr>
      <tr>
        <td id="L1625" class="blob-num js-line-number" data-line-number="1625"></td>
        <td id="LC1625" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1626" class="blob-num js-line-number" data-line-number="1626"></td>
        <td id="LC1626" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1627" class="blob-num js-line-number" data-line-number="1627"></td>
        <td id="LC1627" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1628" class="blob-num js-line-number" data-line-number="1628"></td>
        <td id="LC1628" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1629" class="blob-num js-line-number" data-line-number="1629"></td>
        <td id="LC1629" class="blob-code js-file-line">6.6.  OC-Report-Type AVP</td>
      </tr>
      <tr>
        <td id="L1630" class="blob-num js-line-number" data-line-number="1630"></td>
        <td id="LC1630" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1631" class="blob-num js-line-number" data-line-number="1631"></td>
        <td id="LC1631" class="blob-code js-file-line">   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The</td>
      </tr>
      <tr>
        <td id="L1632" class="blob-num js-line-number" data-line-number="1632"></td>
        <td id="LC1632" class="blob-code js-file-line">   value of the AVP describes what the overload report concerns.  The</td>
      </tr>
      <tr>
        <td id="L1633" class="blob-num js-line-number" data-line-number="1633"></td>
        <td id="LC1633" class="blob-code js-file-line">   following values are initially defined:</td>
      </tr>
      <tr>
        <td id="L1634" class="blob-num js-line-number" data-line-number="1634"></td>
        <td id="LC1634" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1635" class="blob-num js-line-number" data-line-number="1635"></td>
        <td id="LC1635" class="blob-code js-file-line">   0  A host report.  The overload treatment should apply to requests</td>
      </tr>
      <tr>
        <td id="L1636" class="blob-num js-line-number" data-line-number="1636"></td>
        <td id="LC1636" class="blob-code js-file-line">      for which all of the following conditions are true:</td>
      </tr>
      <tr>
        <td id="L1637" class="blob-num js-line-number" data-line-number="1637"></td>
        <td id="LC1637" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1638" class="blob-num js-line-number" data-line-number="1638"></td>
        <td id="LC1638" class="blob-code js-file-line">      Either the Destination-Host AVP is present in the request and its</td>
      </tr>
      <tr>
        <td id="L1639" class="blob-num js-line-number" data-line-number="1639"></td>
        <td id="LC1639" class="blob-code js-file-line">      value matches the value of the Origin-Host AVP of the received</td>
      </tr>
      <tr>
        <td id="L1640" class="blob-num js-line-number" data-line-number="1640"></td>
        <td id="LC1640" class="blob-code js-file-line">      message that contained the OC-OLR AVP; or the Destination-Host is</td>
      </tr>
      <tr>
        <td id="L1641" class="blob-num js-line-number" data-line-number="1641"></td>
        <td id="LC1641" class="blob-code js-file-line">      not present in the request but the value of peer identity</td>
      </tr>
      <tr>
        <td id="L1642" class="blob-num js-line-number" data-line-number="1642"></td>
        <td id="LC1642" class="blob-code js-file-line">      associated with the connection used to send the request matches</td>
      </tr>
      <tr>
        <td id="L1643" class="blob-num js-line-number" data-line-number="1643"></td>
        <td id="LC1643" class="blob-code js-file-line">      the value of the Origin-Host AVP of the received message that</td>
      </tr>
      <tr>
        <td id="L1644" class="blob-num js-line-number" data-line-number="1644"></td>
        <td id="LC1644" class="blob-code js-file-line">      contained the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1645" class="blob-num js-line-number" data-line-number="1645"></td>
        <td id="LC1645" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1646" class="blob-num js-line-number" data-line-number="1646"></td>
        <td id="LC1646" class="blob-code js-file-line">      The value of the Destination-Realm AVP in the request matches the</td>
      </tr>
      <tr>
        <td id="L1647" class="blob-num js-line-number" data-line-number="1647"></td>
        <td id="LC1647" class="blob-code js-file-line">      value of the Origin-Realm AVP of the received message that</td>
      </tr>
      <tr>
        <td id="L1648" class="blob-num js-line-number" data-line-number="1648"></td>
        <td id="LC1648" class="blob-code js-file-line">      contained the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1649" class="blob-num js-line-number" data-line-number="1649"></td>
        <td id="LC1649" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1650" class="blob-num js-line-number" data-line-number="1650"></td>
        <td id="LC1650" class="blob-code js-file-line">      The value of the Application-ID in the Diameter Header of the</td>
      </tr>
      <tr>
        <td id="L1651" class="blob-num js-line-number" data-line-number="1651"></td>
        <td id="LC1651" class="blob-code js-file-line">      request matches the value of the Application-ID of the Diameter</td>
      </tr>
      <tr>
        <td id="L1652" class="blob-num js-line-number" data-line-number="1652"></td>
        <td id="LC1652" class="blob-code js-file-line">      Header of the received message that contained the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1653" class="blob-num js-line-number" data-line-number="1653"></td>
        <td id="LC1653" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1654" class="blob-num js-line-number" data-line-number="1654"></td>
        <td id="LC1654" class="blob-code js-file-line">   1  A realm report.  The overload treatment should apply to requests</td>
      </tr>
      <tr>
        <td id="L1655" class="blob-num js-line-number" data-line-number="1655"></td>
        <td id="LC1655" class="blob-code js-file-line">      for which all of the following conditions are true:</td>
      </tr>
      <tr>
        <td id="L1656" class="blob-num js-line-number" data-line-number="1656"></td>
        <td id="LC1656" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1657" class="blob-num js-line-number" data-line-number="1657"></td>
        <td id="LC1657" class="blob-code js-file-line">      The Destination-Host AVP is absent in the request.</td>
      </tr>
      <tr>
        <td id="L1658" class="blob-num js-line-number" data-line-number="1658"></td>
        <td id="LC1658" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1659" class="blob-num js-line-number" data-line-number="1659"></td>
        <td id="LC1659" class="blob-code js-file-line">      The value of the Destination-Realm AVP in the request matches the</td>
      </tr>
      <tr>
        <td id="L1660" class="blob-num js-line-number" data-line-number="1660"></td>
        <td id="LC1660" class="blob-code js-file-line">      value of the Origin-Realm AVP of the received message that</td>
      </tr>
      <tr>
        <td id="L1661" class="blob-num js-line-number" data-line-number="1661"></td>
        <td id="LC1661" class="blob-code js-file-line">      contained the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1662" class="blob-num js-line-number" data-line-number="1662"></td>
        <td id="LC1662" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1663" class="blob-num js-line-number" data-line-number="1663"></td>
        <td id="LC1663" class="blob-code js-file-line">      The value of the Application-ID in the Diameter Header of the</td>
      </tr>
      <tr>
        <td id="L1664" class="blob-num js-line-number" data-line-number="1664"></td>
        <td id="LC1664" class="blob-code js-file-line">      request matches the value of the Application-ID of the Diameter</td>
      </tr>
      <tr>
        <td id="L1665" class="blob-num js-line-number" data-line-number="1665"></td>
        <td id="LC1665" class="blob-code js-file-line">      Header of the received message that contained the OC-OLR AVP.</td>
      </tr>
      <tr>
        <td id="L1666" class="blob-num js-line-number" data-line-number="1666"></td>
        <td id="LC1666" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1667" class="blob-num js-line-number" data-line-number="1667"></td>
        <td id="LC1667" class="blob-code js-file-line">      Editor&#39;s note: There is still an open issue on the definition of</td>
      </tr>
      <tr>
        <td id="L1668" class="blob-num js-line-number" data-line-number="1668"></td>
        <td id="LC1668" class="blob-code js-file-line">      Realm reports and whether what report types should be supported.</td>
      </tr>
      <tr>
        <td id="L1669" class="blob-num js-line-number" data-line-number="1669"></td>
        <td id="LC1669" class="blob-code js-file-line">      There is consensus that host reports should be supported.  There</td>
      </tr>
      <tr>
        <td id="L1670" class="blob-num js-line-number" data-line-number="1670"></td>
        <td id="LC1670" class="blob-code js-file-line">      is discussion on Realm reports and Realm-Routed-Request reports.</td>
      </tr>
      <tr>
        <td id="L1671" class="blob-num js-line-number" data-line-number="1671"></td>
        <td id="LC1671" class="blob-code js-file-line">      The above definition applies to Realm-Routed-Request reports where</td>
      </tr>
      <tr>
        <td id="L1672" class="blob-num js-line-number" data-line-number="1672"></td>
        <td id="LC1672" class="blob-code js-file-line">      Realm reports are defined to apply to all requests that match the</td>
      </tr>
      <tr>
        <td id="L1673" class="blob-num js-line-number" data-line-number="1673"></td>
        <td id="LC1673" class="blob-code js-file-line">      realm, independent of the presence, absence or value of the</td>
      </tr>
      <tr>
        <td id="L1674" class="blob-num js-line-number" data-line-number="1674"></td>
        <td id="LC1674" class="blob-code js-file-line">      Destination-Host AVP.</td>
      </tr>
      <tr>
        <td id="L1675" class="blob-num js-line-number" data-line-number="1675"></td>
        <td id="LC1675" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1676" class="blob-num js-line-number" data-line-number="1676"></td>
        <td id="LC1676" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1677" class="blob-num js-line-number" data-line-number="1677"></td>
        <td id="LC1677" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1678" class="blob-num js-line-number" data-line-number="1678"></td>
        <td id="LC1678" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1679" class="blob-num js-line-number" data-line-number="1679"></td>
        <td id="LC1679" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1680" class="blob-num js-line-number" data-line-number="1680"></td>
        <td id="LC1680" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 30]</td>
      </tr>
      <tr>
        <td id="L1681" class="blob-num js-line-number" data-line-number="1681"></td>
        <td id="LC1681" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1682" class="blob-num js-line-number" data-line-number="1682"></td>
        <td id="LC1682" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1683" class="blob-num js-line-number" data-line-number="1683"></td>
        <td id="LC1683" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1684" class="blob-num js-line-number" data-line-number="1684"></td>
        <td id="LC1684" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1685" class="blob-num js-line-number" data-line-number="1685"></td>
        <td id="LC1685" class="blob-code js-file-line">   The default value of the OC-Report-Type AVP is 0 (i.e. the host</td>
      </tr>
      <tr>
        <td id="L1686" class="blob-num js-line-number" data-line-number="1686"></td>
        <td id="LC1686" class="blob-code js-file-line">   report).</td>
      </tr>
      <tr>
        <td id="L1687" class="blob-num js-line-number" data-line-number="1687"></td>
        <td id="LC1687" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1688" class="blob-num js-line-number" data-line-number="1688"></td>
        <td id="LC1688" class="blob-code js-file-line">   The OC-Report-Type AVP is envisioned to be useful for situations</td>
      </tr>
      <tr>
        <td id="L1689" class="blob-num js-line-number" data-line-number="1689"></td>
        <td id="LC1689" class="blob-code js-file-line">   where a reacting node needs to apply different overload treatments</td>
      </tr>
      <tr>
        <td id="L1690" class="blob-num js-line-number" data-line-number="1690"></td>
        <td id="LC1690" class="blob-code js-file-line">   for different &quot;types&quot; of overload.  For example, the reacting node(s)</td>
      </tr>
      <tr>
        <td id="L1691" class="blob-num js-line-number" data-line-number="1691"></td>
        <td id="LC1691" class="blob-code js-file-line">   might need to throttle differently requests sent to a specific server</td>
      </tr>
      <tr>
        <td id="L1692" class="blob-num js-line-number" data-line-number="1692"></td>
        <td id="LC1692" class="blob-code js-file-line">   (identified by the Destination-Host AVP in the request) and requests</td>
      </tr>
      <tr>
        <td id="L1693" class="blob-num js-line-number" data-line-number="1693"></td>
        <td id="LC1693" class="blob-code js-file-line">   that can be handled by any server in a realm.  The example in</td>
      </tr>
      <tr>
        <td id="L1694" class="blob-num js-line-number" data-line-number="1694"></td>
        <td id="LC1694" class="blob-code js-file-line">   Appendix B.1 illustrates this usage.</td>
      </tr>
      <tr>
        <td id="L1695" class="blob-num js-line-number" data-line-number="1695"></td>
        <td id="LC1695" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1696" class="blob-num js-line-number" data-line-number="1696"></td>
        <td id="LC1696" class="blob-code js-file-line">6.7.  OC-Reduction-Percentage AVP</td>
      </tr>
      <tr>
        <td id="L1697" class="blob-num js-line-number" data-line-number="1697"></td>
        <td id="LC1697" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1698" class="blob-num js-line-number" data-line-number="1698"></td>
        <td id="LC1698" class="blob-code js-file-line">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td>
      </tr>
      <tr>
        <td id="L1699" class="blob-num js-line-number" data-line-number="1699"></td>
        <td id="LC1699" class="blob-code js-file-line">   and describes the percentage of the traffic that the sender is</td>
      </tr>
      <tr>
        <td id="L1700" class="blob-num js-line-number" data-line-number="1700"></td>
        <td id="LC1700" class="blob-code js-file-line">   requested to reduce, compared to what it otherwise would send.  The</td>
      </tr>
      <tr>
        <td id="L1701" class="blob-num js-line-number" data-line-number="1701"></td>
        <td id="LC1701" class="blob-code js-file-line">   OC-Reduction-Percentage AVP applies to the default (loss) algorithm</td>
      </tr>
      <tr>
        <td id="L1702" class="blob-num js-line-number" data-line-number="1702"></td>
        <td id="LC1702" class="blob-code js-file-line">   specified in this specification.  However, the AVP can be reused for</td>
      </tr>
      <tr>
        <td id="L1703" class="blob-num js-line-number" data-line-number="1703"></td>
        <td id="LC1703" class="blob-code js-file-line">   future abatement algorithms, if its semantics fit into the new</td>
      </tr>
      <tr>
        <td id="L1704" class="blob-num js-line-number" data-line-number="1704"></td>
        <td id="LC1704" class="blob-code js-file-line">   algorithm.</td>
      </tr>
      <tr>
        <td id="L1705" class="blob-num js-line-number" data-line-number="1705"></td>
        <td id="LC1705" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1706" class="blob-num js-line-number" data-line-number="1706"></td>
        <td id="LC1706" class="blob-code js-file-line">   The value of the Reduction-Percentage AVP is between zero (0) and one</td>
      </tr>
      <tr>
        <td id="L1707" class="blob-num js-line-number" data-line-number="1707"></td>
        <td id="LC1707" class="blob-code js-file-line">   hundred (100).  Values greater than 100 are ignored.  The value of</td>
      </tr>
      <tr>
        <td id="L1708" class="blob-num js-line-number" data-line-number="1708"></td>
        <td id="LC1708" class="blob-code js-file-line">   100 means that all traffic is to be throttled, i.e. the reporting</td>
      </tr>
      <tr>
        <td id="L1709" class="blob-num js-line-number" data-line-number="1709"></td>
        <td id="LC1709" class="blob-code js-file-line">   node is under a severe load and ceases to process any new messages.</td>
      </tr>
      <tr>
        <td id="L1710" class="blob-num js-line-number" data-line-number="1710"></td>
        <td id="LC1710" class="blob-code js-file-line">   The value of 0 means that the reporting node is in a stable state and</td>
      </tr>
      <tr>
        <td id="L1711" class="blob-num js-line-number" data-line-number="1711"></td>
        <td id="LC1711" class="blob-code js-file-line">   has no need for the reacting node to apply any traffic abatement.</td>
      </tr>
      <tr>
        <td id="L1712" class="blob-num js-line-number" data-line-number="1712"></td>
        <td id="LC1712" class="blob-code js-file-line">   The default value of the OC-Reduction-Percentage AVP is 0.  When the</td>
      </tr>
      <tr>
        <td id="L1713" class="blob-num js-line-number" data-line-number="1713"></td>
        <td id="LC1713" class="blob-code js-file-line">   OC-Reduction-Percentage AVP is not present in the overload report,</td>
      </tr>
      <tr>
        <td id="L1714" class="blob-num js-line-number" data-line-number="1714"></td>
        <td id="LC1714" class="blob-code js-file-line">   the default value applies.</td>
      </tr>
      <tr>
        <td id="L1715" class="blob-num js-line-number" data-line-number="1715"></td>
        <td id="LC1715" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1716" class="blob-num js-line-number" data-line-number="1716"></td>
        <td id="LC1716" class="blob-code js-file-line">6.8.  Attribute Value Pair flag rules</td>
      </tr>
      <tr>
        <td id="L1717" class="blob-num js-line-number" data-line-number="1717"></td>
        <td id="LC1717" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1718" class="blob-num js-line-number" data-line-number="1718"></td>
        <td id="LC1718" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1719" class="blob-num js-line-number" data-line-number="1719"></td>
        <td id="LC1719" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1720" class="blob-num js-line-number" data-line-number="1720"></td>
        <td id="LC1720" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1721" class="blob-num js-line-number" data-line-number="1721"></td>
        <td id="LC1721" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1722" class="blob-num js-line-number" data-line-number="1722"></td>
        <td id="LC1722" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1723" class="blob-num js-line-number" data-line-number="1723"></td>
        <td id="LC1723" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1724" class="blob-num js-line-number" data-line-number="1724"></td>
        <td id="LC1724" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1725" class="blob-num js-line-number" data-line-number="1725"></td>
        <td id="LC1725" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1726" class="blob-num js-line-number" data-line-number="1726"></td>
        <td id="LC1726" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1727" class="blob-num js-line-number" data-line-number="1727"></td>
        <td id="LC1727" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1728" class="blob-num js-line-number" data-line-number="1728"></td>
        <td id="LC1728" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1729" class="blob-num js-line-number" data-line-number="1729"></td>
        <td id="LC1729" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1730" class="blob-num js-line-number" data-line-number="1730"></td>
        <td id="LC1730" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1731" class="blob-num js-line-number" data-line-number="1731"></td>
        <td id="LC1731" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1732" class="blob-num js-line-number" data-line-number="1732"></td>
        <td id="LC1732" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1733" class="blob-num js-line-number" data-line-number="1733"></td>
        <td id="LC1733" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1734" class="blob-num js-line-number" data-line-number="1734"></td>
        <td id="LC1734" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1735" class="blob-num js-line-number" data-line-number="1735"></td>
        <td id="LC1735" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1736" class="blob-num js-line-number" data-line-number="1736"></td>
        <td id="LC1736" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 31]</td>
      </tr>
      <tr>
        <td id="L1737" class="blob-num js-line-number" data-line-number="1737"></td>
        <td id="LC1737" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1738" class="blob-num js-line-number" data-line-number="1738"></td>
        <td id="LC1738" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1739" class="blob-num js-line-number" data-line-number="1739"></td>
        <td id="LC1739" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1740" class="blob-num js-line-number" data-line-number="1740"></td>
        <td id="LC1740" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1741" class="blob-num js-line-number" data-line-number="1741"></td>
        <td id="LC1741" class="blob-code js-file-line">                                                         +---------+</td>
      </tr>
      <tr>
        <td id="L1742" class="blob-num js-line-number" data-line-number="1742"></td>
        <td id="LC1742" class="blob-code js-file-line">                                                         |AVP flag |</td>
      </tr>
      <tr>
        <td id="L1743" class="blob-num js-line-number" data-line-number="1743"></td>
        <td id="LC1743" class="blob-code js-file-line">                                                         |rules    |</td>
      </tr>
      <tr>
        <td id="L1744" class="blob-num js-line-number" data-line-number="1744"></td>
        <td id="LC1744" class="blob-code js-file-line">                                                         +----+----+</td>
      </tr>
      <tr>
        <td id="L1745" class="blob-num js-line-number" data-line-number="1745"></td>
        <td id="LC1745" class="blob-code js-file-line">                              AVP   Section              |    |MUST|</td>
      </tr>
      <tr>
        <td id="L1746" class="blob-num js-line-number" data-line-number="1746"></td>
        <td id="LC1746" class="blob-code js-file-line">       Attribute Name         Code  Defined  Value Type  |MUST| NOT|</td>
      </tr>
      <tr>
        <td id="L1747" class="blob-num js-line-number" data-line-number="1747"></td>
        <td id="LC1747" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1748" class="blob-num js-line-number" data-line-number="1748"></td>
        <td id="LC1748" class="blob-code js-file-line">      |OC-Supported-Features  TBD1  x.x      Grouped     |    | V  |</td>
      </tr>
      <tr>
        <td id="L1749" class="blob-num js-line-number" data-line-number="1749"></td>
        <td id="LC1749" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1750" class="blob-num js-line-number" data-line-number="1750"></td>
        <td id="LC1750" class="blob-code js-file-line">      |OC-OLR                 TBD2  x.x      Grouped     |    | V  |</td>
      </tr>
      <tr>
        <td id="L1751" class="blob-num js-line-number" data-line-number="1751"></td>
        <td id="LC1751" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1752" class="blob-num js-line-number" data-line-number="1752"></td>
        <td id="LC1752" class="blob-code js-file-line">      |OC-Sequence-Number     TBD3  x.x      Unsigned64  |    | V  |</td>
      </tr>
      <tr>
        <td id="L1753" class="blob-num js-line-number" data-line-number="1753"></td>
        <td id="LC1753" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1754" class="blob-num js-line-number" data-line-number="1754"></td>
        <td id="LC1754" class="blob-code js-file-line">      |OC-Validity-Duration   TBD4  x.x      Unsigned32  |    | V  |</td>
      </tr>
      <tr>
        <td id="L1755" class="blob-num js-line-number" data-line-number="1755"></td>
        <td id="LC1755" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1756" class="blob-num js-line-number" data-line-number="1756"></td>
        <td id="LC1756" class="blob-code js-file-line">      |OC-Report-Type         TBD5  x.x      Enumerated  |    | V  |</td>
      </tr>
      <tr>
        <td id="L1757" class="blob-num js-line-number" data-line-number="1757"></td>
        <td id="LC1757" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1758" class="blob-num js-line-number" data-line-number="1758"></td>
        <td id="LC1758" class="blob-code js-file-line">      |OC-Reduction                                      |    |    |</td>
      </tr>
      <tr>
        <td id="L1759" class="blob-num js-line-number" data-line-number="1759"></td>
        <td id="LC1759" class="blob-code js-file-line">      |  -Percentage          TBD8  x.x      Unsigned32  |    | V  |</td>
      </tr>
      <tr>
        <td id="L1760" class="blob-num js-line-number" data-line-number="1760"></td>
        <td id="LC1760" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1761" class="blob-num js-line-number" data-line-number="1761"></td>
        <td id="LC1761" class="blob-code js-file-line">      |OC-Feature-Vector      TBD6  x.x      Unsigned64  |    | V  |</td>
      </tr>
      <tr>
        <td id="L1762" class="blob-num js-line-number" data-line-number="1762"></td>
        <td id="LC1762" class="blob-code js-file-line">      +--------------------------------------------------+----+----+</td>
      </tr>
      <tr>
        <td id="L1763" class="blob-num js-line-number" data-line-number="1763"></td>
        <td id="LC1763" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1764" class="blob-num js-line-number" data-line-number="1764"></td>
        <td id="LC1764" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1765" class="blob-num js-line-number" data-line-number="1765"></td>
        <td id="LC1765" class="blob-code js-file-line">   As described in the Diameter base protocol [RFC6733], the M-bit</td>
      </tr>
      <tr>
        <td id="L1766" class="blob-num js-line-number" data-line-number="1766"></td>
        <td id="LC1766" class="blob-code js-file-line">   setting for a given AVP is relevant to an application and each</td>
      </tr>
      <tr>
        <td id="L1767" class="blob-num js-line-number" data-line-number="1767"></td>
        <td id="LC1767" class="blob-code js-file-line">   command within that application that includes the AVP.</td>
      </tr>
      <tr>
        <td id="L1768" class="blob-num js-line-number" data-line-number="1768"></td>
        <td id="LC1768" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1769" class="blob-num js-line-number" data-line-number="1769"></td>
        <td id="LC1769" class="blob-code js-file-line">   The Diameter overload control AVPs SHOULD always be sent with the</td>
      </tr>
      <tr>
        <td id="L1770" class="blob-num js-line-number" data-line-number="1770"></td>
        <td id="LC1770" class="blob-code js-file-line">   M-bit cleared when used within existing Diameter applications to</td>
      </tr>
      <tr>
        <td id="L1771" class="blob-num js-line-number" data-line-number="1771"></td>
        <td id="LC1771" class="blob-code js-file-line">   avoid backward compatibility issues.  Otherwise, when reused in newly</td>
      </tr>
      <tr>
        <td id="L1772" class="blob-num js-line-number" data-line-number="1772"></td>
        <td id="LC1772" class="blob-code js-file-line">   defined Diameter applications, the DOC related AVPs SHOULD have the</td>
      </tr>
      <tr>
        <td id="L1773" class="blob-num js-line-number" data-line-number="1773"></td>
        <td id="LC1773" class="blob-code js-file-line">   M-bit set.</td>
      </tr>
      <tr>
        <td id="L1774" class="blob-num js-line-number" data-line-number="1774"></td>
        <td id="LC1774" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1775" class="blob-num js-line-number" data-line-number="1775"></td>
        <td id="LC1775" class="blob-code js-file-line">7.  Error Response Codes</td>
      </tr>
      <tr>
        <td id="L1776" class="blob-num js-line-number" data-line-number="1776"></td>
        <td id="LC1776" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1777" class="blob-num js-line-number" data-line-number="1777"></td>
        <td id="LC1777" class="blob-code js-file-line">   Editor&#39;s note: This section depends on resolution of issue #27.</td>
      </tr>
      <tr>
        <td id="L1778" class="blob-num js-line-number" data-line-number="1778"></td>
        <td id="LC1778" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1779" class="blob-num js-line-number" data-line-number="1779"></td>
        <td id="LC1779" class="blob-code js-file-line">8.  IANA Considerations</td>
      </tr>
      <tr>
        <td id="L1780" class="blob-num js-line-number" data-line-number="1780"></td>
        <td id="LC1780" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1781" class="blob-num js-line-number" data-line-number="1781"></td>
        <td id="LC1781" class="blob-code js-file-line">8.1.  AVP codes</td>
      </tr>
      <tr>
        <td id="L1782" class="blob-num js-line-number" data-line-number="1782"></td>
        <td id="LC1782" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1783" class="blob-num js-line-number" data-line-number="1783"></td>
        <td id="LC1783" class="blob-code js-file-line">   New AVPs defined by this specification are listed in Section 6.  All</td>
      </tr>
      <tr>
        <td id="L1784" class="blob-num js-line-number" data-line-number="1784"></td>
        <td id="LC1784" class="blob-code js-file-line">   AVP codes allocated from the &#39;Authentication, Authorization, and</td>
      </tr>
      <tr>
        <td id="L1785" class="blob-num js-line-number" data-line-number="1785"></td>
        <td id="LC1785" class="blob-code js-file-line">   Accounting (AAA) Parameters&#39; AVP Codes registry.</td>
      </tr>
      <tr>
        <td id="L1786" class="blob-num js-line-number" data-line-number="1786"></td>
        <td id="LC1786" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1787" class="blob-num js-line-number" data-line-number="1787"></td>
        <td id="LC1787" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1788" class="blob-num js-line-number" data-line-number="1788"></td>
        <td id="LC1788" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1789" class="blob-num js-line-number" data-line-number="1789"></td>
        <td id="LC1789" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1790" class="blob-num js-line-number" data-line-number="1790"></td>
        <td id="LC1790" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1791" class="blob-num js-line-number" data-line-number="1791"></td>
        <td id="LC1791" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1792" class="blob-num js-line-number" data-line-number="1792"></td>
        <td id="LC1792" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 32]</td>
      </tr>
      <tr>
        <td id="L1793" class="blob-num js-line-number" data-line-number="1793"></td>
        <td id="LC1793" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1794" class="blob-num js-line-number" data-line-number="1794"></td>
        <td id="LC1794" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1795" class="blob-num js-line-number" data-line-number="1795"></td>
        <td id="LC1795" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1796" class="blob-num js-line-number" data-line-number="1796"></td>
        <td id="LC1796" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1797" class="blob-num js-line-number" data-line-number="1797"></td>
        <td id="LC1797" class="blob-code js-file-line">8.2.  New registries</td>
      </tr>
      <tr>
        <td id="L1798" class="blob-num js-line-number" data-line-number="1798"></td>
        <td id="LC1798" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1799" class="blob-num js-line-number" data-line-number="1799"></td>
        <td id="LC1799" class="blob-code js-file-line">   Three new registries are needed under the &#39;Authentication,</td>
      </tr>
      <tr>
        <td id="L1800" class="blob-num js-line-number" data-line-number="1800"></td>
        <td id="LC1800" class="blob-code js-file-line">   Authorization, and Accounting (AAA) Parameters&#39; registry.</td>
      </tr>
      <tr>
        <td id="L1801" class="blob-num js-line-number" data-line-number="1801"></td>
        <td id="LC1801" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1802" class="blob-num js-line-number" data-line-number="1802"></td>
        <td id="LC1802" class="blob-code js-file-line">   Section 6.2 defines a new &quot;Overload Control Feature Vector&quot; registry</td>
      </tr>
      <tr>
        <td id="L1803" class="blob-num js-line-number" data-line-number="1803"></td>
        <td id="LC1803" class="blob-code js-file-line">   including the initial assignments.  New values can be added into the</td>
      </tr>
      <tr>
        <td id="L1804" class="blob-num js-line-number" data-line-number="1804"></td>
        <td id="LC1804" class="blob-code js-file-line">   registry using the Specification Required policy [RFC5226].  See</td>
      </tr>
      <tr>
        <td id="L1805" class="blob-num js-line-number" data-line-number="1805"></td>
        <td id="LC1805" class="blob-code js-file-line">   Section 6.2 for the initial assignment in the registry.</td>
      </tr>
      <tr>
        <td id="L1806" class="blob-num js-line-number" data-line-number="1806"></td>
        <td id="LC1806" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1807" class="blob-num js-line-number" data-line-number="1807"></td>
        <td id="LC1807" class="blob-code js-file-line">   Section 6.6 defines a new &quot;Overload Report Type&quot; registry with its</td>
      </tr>
      <tr>
        <td id="L1808" class="blob-num js-line-number" data-line-number="1808"></td>
        <td id="LC1808" class="blob-code js-file-line">   initial assignments.  New types can be added using the Specification</td>
      </tr>
      <tr>
        <td id="L1809" class="blob-num js-line-number" data-line-number="1809"></td>
        <td id="LC1809" class="blob-code js-file-line">   Required policy [RFC5226].</td>
      </tr>
      <tr>
        <td id="L1810" class="blob-num js-line-number" data-line-number="1810"></td>
        <td id="LC1810" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1811" class="blob-num js-line-number" data-line-number="1811"></td>
        <td id="LC1811" class="blob-code js-file-line">9.  Security Considerations</td>
      </tr>
      <tr>
        <td id="L1812" class="blob-num js-line-number" data-line-number="1812"></td>
        <td id="LC1812" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1813" class="blob-num js-line-number" data-line-number="1813"></td>
        <td id="LC1813" class="blob-code js-file-line">   This mechanism gives Diameter nodes the ability to request that</td>
      </tr>
      <tr>
        <td id="L1814" class="blob-num js-line-number" data-line-number="1814"></td>
        <td id="LC1814" class="blob-code js-file-line">   downstream nodes send fewer Diameter requests.  Nodes do this by</td>
      </tr>
      <tr>
        <td id="L1815" class="blob-num js-line-number" data-line-number="1815"></td>
        <td id="LC1815" class="blob-code js-file-line">   exchanging overload reports that directly affect this reduction.</td>
      </tr>
      <tr>
        <td id="L1816" class="blob-num js-line-number" data-line-number="1816"></td>
        <td id="LC1816" class="blob-code js-file-line">   This exchange is potentially subject to multiple methods of attack,</td>
      </tr>
      <tr>
        <td id="L1817" class="blob-num js-line-number" data-line-number="1817"></td>
        <td id="LC1817" class="blob-code js-file-line">   and has the potential to be used as a Denial-of-Service (DoS) attack</td>
      </tr>
      <tr>
        <td id="L1818" class="blob-num js-line-number" data-line-number="1818"></td>
        <td id="LC1818" class="blob-code js-file-line">   vector.</td>
      </tr>
      <tr>
        <td id="L1819" class="blob-num js-line-number" data-line-number="1819"></td>
        <td id="LC1819" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1820" class="blob-num js-line-number" data-line-number="1820"></td>
        <td id="LC1820" class="blob-code js-file-line">   Overload reports may contain information about the topology and</td>
      </tr>
      <tr>
        <td id="L1821" class="blob-num js-line-number" data-line-number="1821"></td>
        <td id="LC1821" class="blob-code js-file-line">   current status of a Diameter network.  This information is</td>
      </tr>
      <tr>
        <td id="L1822" class="blob-num js-line-number" data-line-number="1822"></td>
        <td id="LC1822" class="blob-code js-file-line">   potentially sensitive.  Network operators may wish to control</td>
      </tr>
      <tr>
        <td id="L1823" class="blob-num js-line-number" data-line-number="1823"></td>
        <td id="LC1823" class="blob-code js-file-line">   disclosure of overload reports to unauthorized parties to avoid its</td>
      </tr>
      <tr>
        <td id="L1824" class="blob-num js-line-number" data-line-number="1824"></td>
        <td id="LC1824" class="blob-code js-file-line">   use for competitive intelligence or to target attacks.</td>
      </tr>
      <tr>
        <td id="L1825" class="blob-num js-line-number" data-line-number="1825"></td>
        <td id="LC1825" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1826" class="blob-num js-line-number" data-line-number="1826"></td>
        <td id="LC1826" class="blob-code js-file-line">   Diameter does not include features to provide end-to-end</td>
      </tr>
      <tr>
        <td id="L1827" class="blob-num js-line-number" data-line-number="1827"></td>
        <td id="LC1827" class="blob-code js-file-line">   authentication, integrity protection, or confidentiality.  This may</td>
      </tr>
      <tr>
        <td id="L1828" class="blob-num js-line-number" data-line-number="1828"></td>
        <td id="LC1828" class="blob-code js-file-line">   cause complications when sending overload reports between non-</td>
      </tr>
      <tr>
        <td id="L1829" class="blob-num js-line-number" data-line-number="1829"></td>
        <td id="LC1829" class="blob-code js-file-line">   adjacent nodes.</td>
      </tr>
      <tr>
        <td id="L1830" class="blob-num js-line-number" data-line-number="1830"></td>
        <td id="LC1830" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1831" class="blob-num js-line-number" data-line-number="1831"></td>
        <td id="LC1831" class="blob-code js-file-line">9.1.  Potential Threat Modes</td>
      </tr>
      <tr>
        <td id="L1832" class="blob-num js-line-number" data-line-number="1832"></td>
        <td id="LC1832" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1833" class="blob-num js-line-number" data-line-number="1833"></td>
        <td id="LC1833" class="blob-code js-file-line">   The Diameter protocol involves transactions in the form of requests</td>
      </tr>
      <tr>
        <td id="L1834" class="blob-num js-line-number" data-line-number="1834"></td>
        <td id="LC1834" class="blob-code js-file-line">   and answers exchanged between clients and servers.  These clients and</td>
      </tr>
      <tr>
        <td id="L1835" class="blob-num js-line-number" data-line-number="1835"></td>
        <td id="LC1835" class="blob-code js-file-line">   servers may be peers, that is,they may share a direct transport (e.g.</td>
      </tr>
      <tr>
        <td id="L1836" class="blob-num js-line-number" data-line-number="1836"></td>
        <td id="LC1836" class="blob-code js-file-line">   TCP or SCTP) connection, or the messages may traverse one or more</td>
      </tr>
      <tr>
        <td id="L1837" class="blob-num js-line-number" data-line-number="1837"></td>
        <td id="LC1837" class="blob-code js-file-line">   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,</td>
      </tr>
      <tr>
        <td id="L1838" class="blob-num js-line-number" data-line-number="1838"></td>
        <td id="LC1838" class="blob-code js-file-line">   DTLS, or IPSec to authenticate peers, and to provide confidentiality</td>
      </tr>
      <tr>
        <td id="L1839" class="blob-num js-line-number" data-line-number="1839"></td>
        <td id="LC1839" class="blob-code js-file-line">   and integrity protection of traffic between peers.  Nodes can make</td>
      </tr>
      <tr>
        <td id="L1840" class="blob-num js-line-number" data-line-number="1840"></td>
        <td id="LC1840" class="blob-code js-file-line">   authorization decisions based on the peer identities authenticated at</td>
      </tr>
      <tr>
        <td id="L1841" class="blob-num js-line-number" data-line-number="1841"></td>
        <td id="LC1841" class="blob-code js-file-line">   the transport layer.</td>
      </tr>
      <tr>
        <td id="L1842" class="blob-num js-line-number" data-line-number="1842"></td>
        <td id="LC1842" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1843" class="blob-num js-line-number" data-line-number="1843"></td>
        <td id="LC1843" class="blob-code js-file-line">   When agents are involved, this presents an effectively hop-by-hop</td>
      </tr>
      <tr>
        <td id="L1844" class="blob-num js-line-number" data-line-number="1844"></td>
        <td id="LC1844" class="blob-code js-file-line">   trust model.  That is, a Diameter client or server can authorize an</td>
      </tr>
      <tr>
        <td id="L1845" class="blob-num js-line-number" data-line-number="1845"></td>
        <td id="LC1845" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1846" class="blob-num js-line-number" data-line-number="1846"></td>
        <td id="LC1846" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1847" class="blob-num js-line-number" data-line-number="1847"></td>
        <td id="LC1847" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1848" class="blob-num js-line-number" data-line-number="1848"></td>
        <td id="LC1848" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 33]</td>
      </tr>
      <tr>
        <td id="L1849" class="blob-num js-line-number" data-line-number="1849"></td>
        <td id="LC1849" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1850" class="blob-num js-line-number" data-line-number="1850"></td>
        <td id="LC1850" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1851" class="blob-num js-line-number" data-line-number="1851"></td>
        <td id="LC1851" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1852" class="blob-num js-line-number" data-line-number="1852"></td>
        <td id="LC1852" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1853" class="blob-num js-line-number" data-line-number="1853"></td>
        <td id="LC1853" class="blob-code js-file-line">   agent for certain actions, but it must trust that agent to make</td>
      </tr>
      <tr>
        <td id="L1854" class="blob-num js-line-number" data-line-number="1854"></td>
        <td id="LC1854" class="blob-code js-file-line">   appropriate authorization decisions about its peers, and so on.</td>
      </tr>
      <tr>
        <td id="L1855" class="blob-num js-line-number" data-line-number="1855"></td>
        <td id="LC1855" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1856" class="blob-num js-line-number" data-line-number="1856"></td>
        <td id="LC1856" class="blob-code js-file-line">   Since confidentiality and integrity protection occurs at the</td>
      </tr>
      <tr>
        <td id="L1857" class="blob-num js-line-number" data-line-number="1857"></td>
        <td id="LC1857" class="blob-code js-file-line">   transport layer.  Agents can read, and perhaps modify, any part of a</td>
      </tr>
      <tr>
        <td id="L1858" class="blob-num js-line-number" data-line-number="1858"></td>
        <td id="LC1858" class="blob-code js-file-line">   Diameter message, including an overload report.</td>
      </tr>
      <tr>
        <td id="L1859" class="blob-num js-line-number" data-line-number="1859"></td>
        <td id="LC1859" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1860" class="blob-num js-line-number" data-line-number="1860"></td>
        <td id="LC1860" class="blob-code js-file-line">   There are several ways an attacker might attempt to exploit the</td>
      </tr>
      <tr>
        <td id="L1861" class="blob-num js-line-number" data-line-number="1861"></td>
        <td id="LC1861" class="blob-code js-file-line">   overload control mechanism.  An unauthorized third party might inject</td>
      </tr>
      <tr>
        <td id="L1862" class="blob-num js-line-number" data-line-number="1862"></td>
        <td id="LC1862" class="blob-code js-file-line">   an overload report into the network.  If this third party is upstream</td>
      </tr>
      <tr>
        <td id="L1863" class="blob-num js-line-number" data-line-number="1863"></td>
        <td id="LC1863" class="blob-code js-file-line">   of an agent, and that agent fails to apply proper authorization</td>
      </tr>
      <tr>
        <td id="L1864" class="blob-num js-line-number" data-line-number="1864"></td>
        <td id="LC1864" class="blob-code js-file-line">   policies, downstream nodes may mistakenly trust the report.  This</td>
      </tr>
      <tr>
        <td id="L1865" class="blob-num js-line-number" data-line-number="1865"></td>
        <td id="LC1865" class="blob-code js-file-line">   attack is at least partially mitigated by the assumption that nodes</td>
      </tr>
      <tr>
        <td id="L1866" class="blob-num js-line-number" data-line-number="1866"></td>
        <td id="LC1866" class="blob-code js-file-line">   include overload reports in Diameter answers but not in requests.</td>
      </tr>
      <tr>
        <td id="L1867" class="blob-num js-line-number" data-line-number="1867"></td>
        <td id="LC1867" class="blob-code js-file-line">   This requires an attacker to have knowledge of the original request</td>
      </tr>
      <tr>
        <td id="L1868" class="blob-num js-line-number" data-line-number="1868"></td>
        <td id="LC1868" class="blob-code js-file-line">   in order to construct a response.  Therefore, implementations SHOULD</td>
      </tr>
      <tr>
        <td id="L1869" class="blob-num js-line-number" data-line-number="1869"></td>
        <td id="LC1869" class="blob-code js-file-line">   validate that an answer containing an overload report is a properly</td>
      </tr>
      <tr>
        <td id="L1870" class="blob-num js-line-number" data-line-number="1870"></td>
        <td id="LC1870" class="blob-code js-file-line">   constructed response to a pending request prior to acting on the</td>
      </tr>
      <tr>
        <td id="L1871" class="blob-num js-line-number" data-line-number="1871"></td>
        <td id="LC1871" class="blob-code js-file-line">   overload report.</td>
      </tr>
      <tr>
        <td id="L1872" class="blob-num js-line-number" data-line-number="1872"></td>
        <td id="LC1872" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1873" class="blob-num js-line-number" data-line-number="1873"></td>
        <td id="LC1873" class="blob-code js-file-line">   A similar attack involves an otherwise authorized Diameter node that</td>
      </tr>
      <tr>
        <td id="L1874" class="blob-num js-line-number" data-line-number="1874"></td>
        <td id="LC1874" class="blob-code js-file-line">   sends an inappropriate overload report.  For example, a server for</td>
      </tr>
      <tr>
        <td id="L1875" class="blob-num js-line-number" data-line-number="1875"></td>
        <td id="LC1875" class="blob-code js-file-line">   the realm &quot;example.com&quot; might send an overload report indicating that</td>
      </tr>
      <tr>
        <td id="L1876" class="blob-num js-line-number" data-line-number="1876"></td>
        <td id="LC1876" class="blob-code js-file-line">   a competitor&#39;s realm &quot;example.net&quot; is overloaded.  If other nodes act</td>
      </tr>
      <tr>
        <td id="L1877" class="blob-num js-line-number" data-line-number="1877"></td>
        <td id="LC1877" class="blob-code js-file-line">   on the report, they may falsely believe that &quot;example.net&quot; is</td>
      </tr>
      <tr>
        <td id="L1878" class="blob-num js-line-number" data-line-number="1878"></td>
        <td id="LC1878" class="blob-code js-file-line">   overloaded, effectively reducing that realm&#39;s capacity.  Therefore,</td>
      </tr>
      <tr>
        <td id="L1879" class="blob-num js-line-number" data-line-number="1879"></td>
        <td id="LC1879" class="blob-code js-file-line">   it&#39;s critical that nodes validate that an overload report received</td>
      </tr>
      <tr>
        <td id="L1880" class="blob-num js-line-number" data-line-number="1880"></td>
        <td id="LC1880" class="blob-code js-file-line">   from a peer actually falls within that peer&#39;s responsibility before</td>
      </tr>
      <tr>
        <td id="L1881" class="blob-num js-line-number" data-line-number="1881"></td>
        <td id="LC1881" class="blob-code js-file-line">   acting on the report or forwarding the report to other peers.  For</td>
      </tr>
      <tr>
        <td id="L1882" class="blob-num js-line-number" data-line-number="1882"></td>
        <td id="LC1882" class="blob-code js-file-line">   example, an overload report from an peer that applies to a realm not</td>
      </tr>
      <tr>
        <td id="L1883" class="blob-num js-line-number" data-line-number="1883"></td>
        <td id="LC1883" class="blob-code js-file-line">   handled by that peer is suspect.</td>
      </tr>
      <tr>
        <td id="L1884" class="blob-num js-line-number" data-line-number="1884"></td>
        <td id="LC1884" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1885" class="blob-num js-line-number" data-line-number="1885"></td>
        <td id="LC1885" class="blob-code js-file-line">   An attacker might use the information in an overload report to assist</td>
      </tr>
      <tr>
        <td id="L1886" class="blob-num js-line-number" data-line-number="1886"></td>
        <td id="LC1886" class="blob-code js-file-line">   in certain attacks.  For example, an attacker could use information</td>
      </tr>
      <tr>
        <td id="L1887" class="blob-num js-line-number" data-line-number="1887"></td>
        <td id="LC1887" class="blob-code js-file-line">   about current overload conditions to time a DoS attack for maximum</td>
      </tr>
      <tr>
        <td id="L1888" class="blob-num js-line-number" data-line-number="1888"></td>
        <td id="LC1888" class="blob-code js-file-line">   effect, or use subsequent overload reports as a feedback mechanism to</td>
      </tr>
      <tr>
        <td id="L1889" class="blob-num js-line-number" data-line-number="1889"></td>
        <td id="LC1889" class="blob-code js-file-line">   learn the results of a previous or ongoing attack.</td>
      </tr>
      <tr>
        <td id="L1890" class="blob-num js-line-number" data-line-number="1890"></td>
        <td id="LC1890" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1891" class="blob-num js-line-number" data-line-number="1891"></td>
        <td id="LC1891" class="blob-code js-file-line">9.2.  Denial of Service Attacks</td>
      </tr>
      <tr>
        <td id="L1892" class="blob-num js-line-number" data-line-number="1892"></td>
        <td id="LC1892" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1893" class="blob-num js-line-number" data-line-number="1893"></td>
        <td id="LC1893" class="blob-code js-file-line">   Diameter overload reports can cause a node to cease sending some or</td>
      </tr>
      <tr>
        <td id="L1894" class="blob-num js-line-number" data-line-number="1894"></td>
        <td id="LC1894" class="blob-code js-file-line">   all Diameter requests for an extended period.  This makes them a</td>
      </tr>
      <tr>
        <td id="L1895" class="blob-num js-line-number" data-line-number="1895"></td>
        <td id="LC1895" class="blob-code js-file-line">   tempting vector for DoS tacks.  Furthermore, since Diameter is almost</td>
      </tr>
      <tr>
        <td id="L1896" class="blob-num js-line-number" data-line-number="1896"></td>
        <td id="LC1896" class="blob-code js-file-line">   always used in support of other protocols, a DoS attack on Diameter</td>
      </tr>
      <tr>
        <td id="L1897" class="blob-num js-line-number" data-line-number="1897"></td>
        <td id="LC1897" class="blob-code js-file-line">   is likely to impact those protocols as well.  Therefore, Diameter</td>
      </tr>
      <tr>
        <td id="L1898" class="blob-num js-line-number" data-line-number="1898"></td>
        <td id="LC1898" class="blob-code js-file-line">   nodes MUST NOT honor or forward overload reports from unauthorized or</td>
      </tr>
      <tr>
        <td id="L1899" class="blob-num js-line-number" data-line-number="1899"></td>
        <td id="LC1899" class="blob-code js-file-line">   otherwise untrusted sources.</td>
      </tr>
      <tr>
        <td id="L1900" class="blob-num js-line-number" data-line-number="1900"></td>
        <td id="LC1900" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1901" class="blob-num js-line-number" data-line-number="1901"></td>
        <td id="LC1901" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1902" class="blob-num js-line-number" data-line-number="1902"></td>
        <td id="LC1902" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1903" class="blob-num js-line-number" data-line-number="1903"></td>
        <td id="LC1903" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1904" class="blob-num js-line-number" data-line-number="1904"></td>
        <td id="LC1904" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 34]</td>
      </tr>
      <tr>
        <td id="L1905" class="blob-num js-line-number" data-line-number="1905"></td>
        <td id="LC1905" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1906" class="blob-num js-line-number" data-line-number="1906"></td>
        <td id="LC1906" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1907" class="blob-num js-line-number" data-line-number="1907"></td>
        <td id="LC1907" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1908" class="blob-num js-line-number" data-line-number="1908"></td>
        <td id="LC1908" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1909" class="blob-num js-line-number" data-line-number="1909"></td>
        <td id="LC1909" class="blob-code js-file-line">9.3.  Non-Compliant Nodes</td>
      </tr>
      <tr>
        <td id="L1910" class="blob-num js-line-number" data-line-number="1910"></td>
        <td id="LC1910" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1911" class="blob-num js-line-number" data-line-number="1911"></td>
        <td id="LC1911" class="blob-code js-file-line">   When a Diameter node sends an overload report, it cannot assume that</td>
      </tr>
      <tr>
        <td id="L1912" class="blob-num js-line-number" data-line-number="1912"></td>
        <td id="LC1912" class="blob-code js-file-line">   all nodes will comply.  A non-compliant node might continue to send</td>
      </tr>
      <tr>
        <td id="L1913" class="blob-num js-line-number" data-line-number="1913"></td>
        <td id="LC1913" class="blob-code js-file-line">   requests with no reduction in load.  Requirement 28 [RFC7068]</td>
      </tr>
      <tr>
        <td id="L1914" class="blob-num js-line-number" data-line-number="1914"></td>
        <td id="LC1914" class="blob-code js-file-line">   indicates that the overload control solution cannot assume that all</td>
      </tr>
      <tr>
        <td id="L1915" class="blob-num js-line-number" data-line-number="1915"></td>
        <td id="LC1915" class="blob-code js-file-line">   Diameter nodes in a network are necessarily trusted, and that</td>
      </tr>
      <tr>
        <td id="L1916" class="blob-num js-line-number" data-line-number="1916"></td>
        <td id="LC1916" class="blob-code js-file-line">   malicious nodes not be allowed to take advantage of the overload</td>
      </tr>
      <tr>
        <td id="L1917" class="blob-num js-line-number" data-line-number="1917"></td>
        <td id="LC1917" class="blob-code js-file-line">   control mechanism to get more than their fair share of service.</td>
      </tr>
      <tr>
        <td id="L1918" class="blob-num js-line-number" data-line-number="1918"></td>
        <td id="LC1918" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1919" class="blob-num js-line-number" data-line-number="1919"></td>
        <td id="LC1919" class="blob-code js-file-line">   In the absence of an overload control mechanism, Diameter nodes need</td>
      </tr>
      <tr>
        <td id="L1920" class="blob-num js-line-number" data-line-number="1920"></td>
        <td id="LC1920" class="blob-code js-file-line">   to implement strategies to protect themselves from floods of</td>
      </tr>
      <tr>
        <td id="L1921" class="blob-num js-line-number" data-line-number="1921"></td>
        <td id="LC1921" class="blob-code js-file-line">   requests, and to make sure that a disproportionate load from one</td>
      </tr>
      <tr>
        <td id="L1922" class="blob-num js-line-number" data-line-number="1922"></td>
        <td id="LC1922" class="blob-code js-file-line">   source does not prevent other sources from receiving service.  For</td>
      </tr>
      <tr>
        <td id="L1923" class="blob-num js-line-number" data-line-number="1923"></td>
        <td id="LC1923" class="blob-code js-file-line">   example, a Diameter server might reject a certain percentage of</td>
      </tr>
      <tr>
        <td id="L1924" class="blob-num js-line-number" data-line-number="1924"></td>
        <td id="LC1924" class="blob-code js-file-line">   requests from sources that exceed certain limits.  Overload control</td>
      </tr>
      <tr>
        <td id="L1925" class="blob-num js-line-number" data-line-number="1925"></td>
        <td id="LC1925" class="blob-code js-file-line">   can be thought of as an optimization for such strategies, where</td>
      </tr>
      <tr>
        <td id="L1926" class="blob-num js-line-number" data-line-number="1926"></td>
        <td id="LC1926" class="blob-code js-file-line">   downstream nodes never send the excess requests in the first place.</td>
      </tr>
      <tr>
        <td id="L1927" class="blob-num js-line-number" data-line-number="1927"></td>
        <td id="LC1927" class="blob-code js-file-line">   However, the presence of an overload control mechanism does not</td>
      </tr>
      <tr>
        <td id="L1928" class="blob-num js-line-number" data-line-number="1928"></td>
        <td id="LC1928" class="blob-code js-file-line">   remove the need for these other protection strategies.</td>
      </tr>
      <tr>
        <td id="L1929" class="blob-num js-line-number" data-line-number="1929"></td>
        <td id="LC1929" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1930" class="blob-num js-line-number" data-line-number="1930"></td>
        <td id="LC1930" class="blob-code js-file-line">9.4.  End-to End-Security Issues</td>
      </tr>
      <tr>
        <td id="L1931" class="blob-num js-line-number" data-line-number="1931"></td>
        <td id="LC1931" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1932" class="blob-num js-line-number" data-line-number="1932"></td>
        <td id="LC1932" class="blob-code js-file-line">   The lack of end-to-end security features makes it far more difficult</td>
      </tr>
      <tr>
        <td id="L1933" class="blob-num js-line-number" data-line-number="1933"></td>
        <td id="LC1933" class="blob-code js-file-line">   to establish trust in overload reports that originate from non-</td>
      </tr>
      <tr>
        <td id="L1934" class="blob-num js-line-number" data-line-number="1934"></td>
        <td id="LC1934" class="blob-code js-file-line">   adjacent nodes.  Any agents in the message path may insert or modify</td>
      </tr>
      <tr>
        <td id="L1935" class="blob-num js-line-number" data-line-number="1935"></td>
        <td id="LC1935" class="blob-code js-file-line">   overload reports.  Nodes must trust that their adjacent peers perform</td>
      </tr>
      <tr>
        <td id="L1936" class="blob-num js-line-number" data-line-number="1936"></td>
        <td id="LC1936" class="blob-code js-file-line">   proper checks on overload reports from their peers, and so on,</td>
      </tr>
      <tr>
        <td id="L1937" class="blob-num js-line-number" data-line-number="1937"></td>
        <td id="LC1937" class="blob-code js-file-line">   creating a transitive-trust requirement extending for potentially</td>
      </tr>
      <tr>
        <td id="L1938" class="blob-num js-line-number" data-line-number="1938"></td>
        <td id="LC1938" class="blob-code js-file-line">   long chains of nodes.  Network operators must determine if this</td>
      </tr>
      <tr>
        <td id="L1939" class="blob-num js-line-number" data-line-number="1939"></td>
        <td id="LC1939" class="blob-code js-file-line">   transitive trust requirement is acceptable for their deployments.</td>
      </tr>
      <tr>
        <td id="L1940" class="blob-num js-line-number" data-line-number="1940"></td>
        <td id="LC1940" class="blob-code js-file-line">   Nodes supporting Diameter overload control MUST give operators the</td>
      </tr>
      <tr>
        <td id="L1941" class="blob-num js-line-number" data-line-number="1941"></td>
        <td id="LC1941" class="blob-code js-file-line">   ability to select which peers are trusted to deliver overload</td>
      </tr>
      <tr>
        <td id="L1942" class="blob-num js-line-number" data-line-number="1942"></td>
        <td id="LC1942" class="blob-code js-file-line">   reports, and whether they are trusted to forward overload reports</td>
      </tr>
      <tr>
        <td id="L1943" class="blob-num js-line-number" data-line-number="1943"></td>
        <td id="LC1943" class="blob-code js-file-line">   from non-adjacent nodes.</td>
      </tr>
      <tr>
        <td id="L1944" class="blob-num js-line-number" data-line-number="1944"></td>
        <td id="LC1944" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1945" class="blob-num js-line-number" data-line-number="1945"></td>
        <td id="LC1945" class="blob-code js-file-line">   The lack of end-to-end confidentiality protection means that any</td>
      </tr>
      <tr>
        <td id="L1946" class="blob-num js-line-number" data-line-number="1946"></td>
        <td id="LC1946" class="blob-code js-file-line">   Diameter agent in the path of an overload report can view the</td>
      </tr>
      <tr>
        <td id="L1947" class="blob-num js-line-number" data-line-number="1947"></td>
        <td id="LC1947" class="blob-code js-file-line">   contents of that report.  In addition to the requirement to select</td>
      </tr>
      <tr>
        <td id="L1948" class="blob-num js-line-number" data-line-number="1948"></td>
        <td id="LC1948" class="blob-code js-file-line">   which peers are trusted to send overload reports, operators MUST be</td>
      </tr>
      <tr>
        <td id="L1949" class="blob-num js-line-number" data-line-number="1949"></td>
        <td id="LC1949" class="blob-code js-file-line">   able to select which peers are authorized to receive reports.  A node</td>
      </tr>
      <tr>
        <td id="L1950" class="blob-num js-line-number" data-line-number="1950"></td>
        <td id="LC1950" class="blob-code js-file-line">   MUST not send an overload report to a peer not authorized to receive</td>
      </tr>
      <tr>
        <td id="L1951" class="blob-num js-line-number" data-line-number="1951"></td>
        <td id="LC1951" class="blob-code js-file-line">   it.  Furthermore, an agent MUST remove any overload reports that</td>
      </tr>
      <tr>
        <td id="L1952" class="blob-num js-line-number" data-line-number="1952"></td>
        <td id="LC1952" class="blob-code js-file-line">   might have been inserted by other nodes before forwarding a Diameter</td>
      </tr>
      <tr>
        <td id="L1953" class="blob-num js-line-number" data-line-number="1953"></td>
        <td id="LC1953" class="blob-code js-file-line">   message to a peer that is not authorized to receive overload reports.</td>
      </tr>
      <tr>
        <td id="L1954" class="blob-num js-line-number" data-line-number="1954"></td>
        <td id="LC1954" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1955" class="blob-num js-line-number" data-line-number="1955"></td>
        <td id="LC1955" class="blob-code js-file-line">   At the time of this writing, the DIME working group is studying</td>
      </tr>
      <tr>
        <td id="L1956" class="blob-num js-line-number" data-line-number="1956"></td>
        <td id="LC1956" class="blob-code js-file-line">   requirements for adding end-to-end security</td>
      </tr>
      <tr>
        <td id="L1957" class="blob-num js-line-number" data-line-number="1957"></td>
        <td id="LC1957" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1958" class="blob-num js-line-number" data-line-number="1958"></td>
        <td id="LC1958" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1959" class="blob-num js-line-number" data-line-number="1959"></td>
        <td id="LC1959" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1960" class="blob-num js-line-number" data-line-number="1960"></td>
        <td id="LC1960" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 35]</td>
      </tr>
      <tr>
        <td id="L1961" class="blob-num js-line-number" data-line-number="1961"></td>
        <td id="LC1961" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L1962" class="blob-num js-line-number" data-line-number="1962"></td>
        <td id="LC1962" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L1963" class="blob-num js-line-number" data-line-number="1963"></td>
        <td id="LC1963" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1964" class="blob-num js-line-number" data-line-number="1964"></td>
        <td id="LC1964" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1965" class="blob-num js-line-number" data-line-number="1965"></td>
        <td id="LC1965" class="blob-code js-file-line">   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,</td>
      </tr>
      <tr>
        <td id="L1966" class="blob-num js-line-number" data-line-number="1966"></td>
        <td id="LC1966" class="blob-code js-file-line">   when they become available, might make it easier to establish trust</td>
      </tr>
      <tr>
        <td id="L1967" class="blob-num js-line-number" data-line-number="1967"></td>
        <td id="LC1967" class="blob-code js-file-line">   in non-adjacent nodes for overload control purposes.  Readers should</td>
      </tr>
      <tr>
        <td id="L1968" class="blob-num js-line-number" data-line-number="1968"></td>
        <td id="LC1968" class="blob-code js-file-line">   be reminded, however, that the overload control mechanism encourages</td>
      </tr>
      <tr>
        <td id="L1969" class="blob-num js-line-number" data-line-number="1969"></td>
        <td id="LC1969" class="blob-code js-file-line">   Diameter agents to modify AVPs in, or insert additional AVPs into,</td>
      </tr>
      <tr>
        <td id="L1970" class="blob-num js-line-number" data-line-number="1970"></td>
        <td id="LC1970" class="blob-code js-file-line">   existing messages that are originated by other nodes.  If end-to-end</td>
      </tr>
      <tr>
        <td id="L1971" class="blob-num js-line-number" data-line-number="1971"></td>
        <td id="LC1971" class="blob-code js-file-line">   security is enabled, there is a risk that such modification could</td>
      </tr>
      <tr>
        <td id="L1972" class="blob-num js-line-number" data-line-number="1972"></td>
        <td id="LC1972" class="blob-code js-file-line">   violate integrity protection.  The details of using any future</td>
      </tr>
      <tr>
        <td id="L1973" class="blob-num js-line-number" data-line-number="1973"></td>
        <td id="LC1973" class="blob-code js-file-line">   Diameter end-to-end security mechanism with overload control will</td>
      </tr>
      <tr>
        <td id="L1974" class="blob-num js-line-number" data-line-number="1974"></td>
        <td id="LC1974" class="blob-code js-file-line">   require careful consideration, and are beyond the scope of this</td>
      </tr>
      <tr>
        <td id="L1975" class="blob-num js-line-number" data-line-number="1975"></td>
        <td id="LC1975" class="blob-code js-file-line">   document.</td>
      </tr>
      <tr>
        <td id="L1976" class="blob-num js-line-number" data-line-number="1976"></td>
        <td id="LC1976" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1977" class="blob-num js-line-number" data-line-number="1977"></td>
        <td id="LC1977" class="blob-code js-file-line">10.  Contributors</td>
      </tr>
      <tr>
        <td id="L1978" class="blob-num js-line-number" data-line-number="1978"></td>
        <td id="LC1978" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1979" class="blob-num js-line-number" data-line-number="1979"></td>
        <td id="LC1979" class="blob-code js-file-line">   The following people contributed substantial ideas, feedback, and</td>
      </tr>
      <tr>
        <td id="L1980" class="blob-num js-line-number" data-line-number="1980"></td>
        <td id="LC1980" class="blob-code js-file-line">   discussion to this document:</td>
      </tr>
      <tr>
        <td id="L1981" class="blob-num js-line-number" data-line-number="1981"></td>
        <td id="LC1981" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1982" class="blob-num js-line-number" data-line-number="1982"></td>
        <td id="LC1982" class="blob-code js-file-line">   o  Eric McMurry</td>
      </tr>
      <tr>
        <td id="L1983" class="blob-num js-line-number" data-line-number="1983"></td>
        <td id="LC1983" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1984" class="blob-num js-line-number" data-line-number="1984"></td>
        <td id="LC1984" class="blob-code js-file-line">   o  Hannes Tschofenig</td>
      </tr>
      <tr>
        <td id="L1985" class="blob-num js-line-number" data-line-number="1985"></td>
        <td id="LC1985" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1986" class="blob-num js-line-number" data-line-number="1986"></td>
        <td id="LC1986" class="blob-code js-file-line">   o  Ulrich Wiehe</td>
      </tr>
      <tr>
        <td id="L1987" class="blob-num js-line-number" data-line-number="1987"></td>
        <td id="LC1987" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1988" class="blob-num js-line-number" data-line-number="1988"></td>
        <td id="LC1988" class="blob-code js-file-line">   o  Jean-Jacques Trottin</td>
      </tr>
      <tr>
        <td id="L1989" class="blob-num js-line-number" data-line-number="1989"></td>
        <td id="LC1989" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1990" class="blob-num js-line-number" data-line-number="1990"></td>
        <td id="LC1990" class="blob-code js-file-line">   o  Maria Cruz Bartolome</td>
      </tr>
      <tr>
        <td id="L1991" class="blob-num js-line-number" data-line-number="1991"></td>
        <td id="LC1991" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1992" class="blob-num js-line-number" data-line-number="1992"></td>
        <td id="LC1992" class="blob-code js-file-line">   o  Martin Dolly</td>
      </tr>
      <tr>
        <td id="L1993" class="blob-num js-line-number" data-line-number="1993"></td>
        <td id="LC1993" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1994" class="blob-num js-line-number" data-line-number="1994"></td>
        <td id="LC1994" class="blob-code js-file-line">   o  Nirav Salot</td>
      </tr>
      <tr>
        <td id="L1995" class="blob-num js-line-number" data-line-number="1995"></td>
        <td id="LC1995" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1996" class="blob-num js-line-number" data-line-number="1996"></td>
        <td id="LC1996" class="blob-code js-file-line">   o  Susan Shishufeng</td>
      </tr>
      <tr>
        <td id="L1997" class="blob-num js-line-number" data-line-number="1997"></td>
        <td id="LC1997" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L1998" class="blob-num js-line-number" data-line-number="1998"></td>
        <td id="LC1998" class="blob-code js-file-line">11.  References</td>
      </tr>
      <tr>
        <td id="L1999" class="blob-num js-line-number" data-line-number="1999"></td>
        <td id="LC1999" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2000" class="blob-num js-line-number" data-line-number="2000"></td>
        <td id="LC2000" class="blob-code js-file-line">11.1.  Normative References</td>
      </tr>
      <tr>
        <td id="L2001" class="blob-num js-line-number" data-line-number="2001"></td>
        <td id="LC2001" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2002" class="blob-num js-line-number" data-line-number="2002"></td>
        <td id="LC2002" class="blob-code js-file-line">   [RFC2119]  Bradner, S., &quot;Key words for use in RFCs to Indicate</td>
      </tr>
      <tr>
        <td id="L2003" class="blob-num js-line-number" data-line-number="2003"></td>
        <td id="LC2003" class="blob-code js-file-line">              Requirement Levels&quot;, BCP 14, RFC 2119, March 1997.</td>
      </tr>
      <tr>
        <td id="L2004" class="blob-num js-line-number" data-line-number="2004"></td>
        <td id="LC2004" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2005" class="blob-num js-line-number" data-line-number="2005"></td>
        <td id="LC2005" class="blob-code js-file-line">   [RFC5226]  Narten, T. and H. Alvestrand, &quot;Guidelines for Writing an</td>
      </tr>
      <tr>
        <td id="L2006" class="blob-num js-line-number" data-line-number="2006"></td>
        <td id="LC2006" class="blob-code js-file-line">              IANA Considerations Section in RFCs&quot;, BCP 26, RFC 5226,</td>
      </tr>
      <tr>
        <td id="L2007" class="blob-num js-line-number" data-line-number="2007"></td>
        <td id="LC2007" class="blob-code js-file-line">              May 2008.</td>
      </tr>
      <tr>
        <td id="L2008" class="blob-num js-line-number" data-line-number="2008"></td>
        <td id="LC2008" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2009" class="blob-num js-line-number" data-line-number="2009"></td>
        <td id="LC2009" class="blob-code js-file-line">   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, &quot;Network</td>
      </tr>
      <tr>
        <td id="L2010" class="blob-num js-line-number" data-line-number="2010"></td>
        <td id="LC2010" class="blob-code js-file-line">              Time Protocol Version 4: Protocol and Algorithms</td>
      </tr>
      <tr>
        <td id="L2011" class="blob-num js-line-number" data-line-number="2011"></td>
        <td id="LC2011" class="blob-code js-file-line">              Specification&quot;, RFC 5905, June 2010.</td>
      </tr>
      <tr>
        <td id="L2012" class="blob-num js-line-number" data-line-number="2012"></td>
        <td id="LC2012" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2013" class="blob-num js-line-number" data-line-number="2013"></td>
        <td id="LC2013" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2014" class="blob-num js-line-number" data-line-number="2014"></td>
        <td id="LC2014" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2015" class="blob-num js-line-number" data-line-number="2015"></td>
        <td id="LC2015" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2016" class="blob-num js-line-number" data-line-number="2016"></td>
        <td id="LC2016" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 36]</td>
      </tr>
      <tr>
        <td id="L2017" class="blob-num js-line-number" data-line-number="2017"></td>
        <td id="LC2017" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2018" class="blob-num js-line-number" data-line-number="2018"></td>
        <td id="LC2018" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2019" class="blob-num js-line-number" data-line-number="2019"></td>
        <td id="LC2019" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2020" class="blob-num js-line-number" data-line-number="2020"></td>
        <td id="LC2020" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2021" class="blob-num js-line-number" data-line-number="2021"></td>
        <td id="LC2021" class="blob-code js-file-line">   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,</td>
      </tr>
      <tr>
        <td id="L2022" class="blob-num js-line-number" data-line-number="2022"></td>
        <td id="LC2022" class="blob-code js-file-line">              &quot;Diameter Base Protocol&quot;, RFC 6733, October 2012.</td>
      </tr>
      <tr>
        <td id="L2023" class="blob-num js-line-number" data-line-number="2023"></td>
        <td id="LC2023" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2024" class="blob-num js-line-number" data-line-number="2024"></td>
        <td id="LC2024" class="blob-code js-file-line">11.2.  Informative References</td>
      </tr>
      <tr>
        <td id="L2025" class="blob-num js-line-number" data-line-number="2025"></td>
        <td id="LC2025" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2026" class="blob-num js-line-number" data-line-number="2026"></td>
        <td id="LC2026" class="blob-code js-file-line">   [Cx]       3GPP, , &quot;ETSI TS 129 229 V11.4.0&quot;, August 2013.</td>
      </tr>
      <tr>
        <td id="L2027" class="blob-num js-line-number" data-line-number="2027"></td>
        <td id="LC2027" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2028" class="blob-num js-line-number" data-line-number="2028"></td>
        <td id="LC2028" class="blob-code js-file-line">   [I-D.ietf-dime-e2e-sec-req]</td>
      </tr>
      <tr>
        <td id="L2029" class="blob-num js-line-number" data-line-number="2029"></td>
        <td id="LC2029" class="blob-code js-file-line">              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,</td>
      </tr>
      <tr>
        <td id="L2030" class="blob-num js-line-number" data-line-number="2030"></td>
        <td id="LC2030" class="blob-code js-file-line">              &quot;Diameter AVP Level Security: Scenarios and Requirements&quot;,</td>
      </tr>
      <tr>
        <td id="L2031" class="blob-num js-line-number" data-line-number="2031"></td>
        <td id="LC2031" class="blob-code js-file-line">              draft-ietf-dime-e2e-sec-req-00 (work in progress),</td>
      </tr>
      <tr>
        <td id="L2032" class="blob-num js-line-number" data-line-number="2032"></td>
        <td id="LC2032" class="blob-code js-file-line">              September 2013.</td>
      </tr>
      <tr>
        <td id="L2033" class="blob-num js-line-number" data-line-number="2033"></td>
        <td id="LC2033" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2034" class="blob-num js-line-number" data-line-number="2034"></td>
        <td id="LC2034" class="blob-code js-file-line">   [PCC]      3GPP, , &quot;ETSI TS 123 203 V11.12.0&quot;, December 2013.</td>
      </tr>
      <tr>
        <td id="L2035" class="blob-num js-line-number" data-line-number="2035"></td>
        <td id="LC2035" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2036" class="blob-num js-line-number" data-line-number="2036"></td>
        <td id="LC2036" class="blob-code js-file-line">   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.</td>
      </tr>
      <tr>
        <td id="L2037" class="blob-num js-line-number" data-line-number="2037"></td>
        <td id="LC2037" class="blob-code js-file-line">              Loughney, &quot;Diameter Credit-Control Application&quot;, RFC 4006,</td>
      </tr>
      <tr>
        <td id="L2038" class="blob-num js-line-number" data-line-number="2038"></td>
        <td id="LC2038" class="blob-code js-file-line">              August 2005.</td>
      </tr>
      <tr>
        <td id="L2039" class="blob-num js-line-number" data-line-number="2039"></td>
        <td id="LC2039" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2040" class="blob-num js-line-number" data-line-number="2040"></td>
        <td id="LC2040" class="blob-code js-file-line">   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,</td>
      </tr>
      <tr>
        <td id="L2041" class="blob-num js-line-number" data-line-number="2041"></td>
        <td id="LC2041" class="blob-code js-file-line">              &quot;Clarifications on the Routing of Diameter Requests Based</td>
      </tr>
      <tr>
        <td id="L2042" class="blob-num js-line-number" data-line-number="2042"></td>
        <td id="LC2042" class="blob-code js-file-line">              on the Username and the Realm&quot;, RFC 5729, December 2009.</td>
      </tr>
      <tr>
        <td id="L2043" class="blob-num js-line-number" data-line-number="2043"></td>
        <td id="LC2043" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2044" class="blob-num js-line-number" data-line-number="2044"></td>
        <td id="LC2044" class="blob-code js-file-line">   [RFC7068]  McMurry, E. and B. Campbell, &quot;Diameter Overload Control</td>
      </tr>
      <tr>
        <td id="L2045" class="blob-num js-line-number" data-line-number="2045"></td>
        <td id="LC2045" class="blob-code js-file-line">              Requirements&quot;, RFC 7068, November 2013.</td>
      </tr>
      <tr>
        <td id="L2046" class="blob-num js-line-number" data-line-number="2046"></td>
        <td id="LC2046" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2047" class="blob-num js-line-number" data-line-number="2047"></td>
        <td id="LC2047" class="blob-code js-file-line">   [S13]      3GPP, , &quot;ETSI TS 129 272 V11.9.0&quot;, December 2012.</td>
      </tr>
      <tr>
        <td id="L2048" class="blob-num js-line-number" data-line-number="2048"></td>
        <td id="LC2048" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2049" class="blob-num js-line-number" data-line-number="2049"></td>
        <td id="LC2049" class="blob-code js-file-line">Appendix A.  Issues left for future specifications</td>
      </tr>
      <tr>
        <td id="L2050" class="blob-num js-line-number" data-line-number="2050"></td>
        <td id="LC2050" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2051" class="blob-num js-line-number" data-line-number="2051"></td>
        <td id="LC2051" class="blob-code js-file-line">   The base solution for the overload control does not cover all</td>
      </tr>
      <tr>
        <td id="L2052" class="blob-num js-line-number" data-line-number="2052"></td>
        <td id="LC2052" class="blob-code js-file-line">   possible use cases.  A number of solution aspects were intentionally</td>
      </tr>
      <tr>
        <td id="L2053" class="blob-num js-line-number" data-line-number="2053"></td>
        <td id="LC2053" class="blob-code js-file-line">   left for future specification and protocol work.</td>
      </tr>
      <tr>
        <td id="L2054" class="blob-num js-line-number" data-line-number="2054"></td>
        <td id="LC2054" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2055" class="blob-num js-line-number" data-line-number="2055"></td>
        <td id="LC2055" class="blob-code js-file-line">A.1.  Additional traffic abatement algorithms</td>
      </tr>
      <tr>
        <td id="L2056" class="blob-num js-line-number" data-line-number="2056"></td>
        <td id="LC2056" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2057" class="blob-num js-line-number" data-line-number="2057"></td>
        <td id="LC2057" class="blob-code js-file-line">   This specification describes only means for a simple loss based</td>
      </tr>
      <tr>
        <td id="L2058" class="blob-num js-line-number" data-line-number="2058"></td>
        <td id="LC2058" class="blob-code js-file-line">   algorithm.  Future algorithms can be added using the designed</td>
      </tr>
      <tr>
        <td id="L2059" class="blob-num js-line-number" data-line-number="2059"></td>
        <td id="LC2059" class="blob-code js-file-line">   solution extension mechanism.  The new algorithms need to be</td>
      </tr>
      <tr>
        <td id="L2060" class="blob-num js-line-number" data-line-number="2060"></td>
        <td id="LC2060" class="blob-code js-file-line">   registered with IANA.  See Sections 6.1 and 8 for the required IANA</td>
      </tr>
      <tr>
        <td id="L2061" class="blob-num js-line-number" data-line-number="2061"></td>
        <td id="LC2061" class="blob-code js-file-line">   steps.</td>
      </tr>
      <tr>
        <td id="L2062" class="blob-num js-line-number" data-line-number="2062"></td>
        <td id="LC2062" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2063" class="blob-num js-line-number" data-line-number="2063"></td>
        <td id="LC2063" class="blob-code js-file-line">A.2.  Agent Overload</td>
      </tr>
      <tr>
        <td id="L2064" class="blob-num js-line-number" data-line-number="2064"></td>
        <td id="LC2064" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2065" class="blob-num js-line-number" data-line-number="2065"></td>
        <td id="LC2065" class="blob-code js-file-line">   This specification focuses on Diameter endpoint (server or client)</td>
      </tr>
      <tr>
        <td id="L2066" class="blob-num js-line-number" data-line-number="2066"></td>
        <td id="LC2066" class="blob-code js-file-line">   overload.  A separate extension will be required to outline the</td>
      </tr>
      <tr>
        <td id="L2067" class="blob-num js-line-number" data-line-number="2067"></td>
        <td id="LC2067" class="blob-code js-file-line">   handling the case of agent overload.</td>
      </tr>
      <tr>
        <td id="L2068" class="blob-num js-line-number" data-line-number="2068"></td>
        <td id="LC2068" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2069" class="blob-num js-line-number" data-line-number="2069"></td>
        <td id="LC2069" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2070" class="blob-num js-line-number" data-line-number="2070"></td>
        <td id="LC2070" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2071" class="blob-num js-line-number" data-line-number="2071"></td>
        <td id="LC2071" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2072" class="blob-num js-line-number" data-line-number="2072"></td>
        <td id="LC2072" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 37]</td>
      </tr>
      <tr>
        <td id="L2073" class="blob-num js-line-number" data-line-number="2073"></td>
        <td id="LC2073" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2074" class="blob-num js-line-number" data-line-number="2074"></td>
        <td id="LC2074" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2075" class="blob-num js-line-number" data-line-number="2075"></td>
        <td id="LC2075" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2076" class="blob-num js-line-number" data-line-number="2076"></td>
        <td id="LC2076" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2077" class="blob-num js-line-number" data-line-number="2077"></td>
        <td id="LC2077" class="blob-code js-file-line">A.3.  DIAMETER_TOO_BUSY clarifications</td>
      </tr>
      <tr>
        <td id="L2078" class="blob-num js-line-number" data-line-number="2078"></td>
        <td id="LC2078" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2079" class="blob-num js-line-number" data-line-number="2079"></td>
        <td id="LC2079" class="blob-code js-file-line">   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is</td>
      </tr>
      <tr>
        <td id="L2080" class="blob-num js-line-number" data-line-number="2080"></td>
        <td id="LC2080" class="blob-code js-file-line">   somewhat under specified.  For example, there is no information how</td>
      </tr>
      <tr>
        <td id="L2081" class="blob-num js-line-number" data-line-number="2081"></td>
        <td id="LC2081" class="blob-code js-file-line">   long the specific Diameter node is willing to be unavailable.  A</td>
      </tr>
      <tr>
        <td id="L2082" class="blob-num js-line-number" data-line-number="2082"></td>
        <td id="LC2082" class="blob-code js-file-line">   specification updating [RFC6733] should clarify the handling of</td>
      </tr>
      <tr>
        <td id="L2083" class="blob-num js-line-number" data-line-number="2083"></td>
        <td id="LC2083" class="blob-code js-file-line">   DIAMETER_TOO_BUSY from the error answer initiating Diameter node</td>
      </tr>
      <tr>
        <td id="L2084" class="blob-num js-line-number" data-line-number="2084"></td>
        <td id="LC2084" class="blob-code js-file-line">   point of view and from the original request initiating Diameter node</td>
      </tr>
      <tr>
        <td id="L2085" class="blob-num js-line-number" data-line-number="2085"></td>
        <td id="LC2085" class="blob-code js-file-line">   point of view.  Further, the inclusion of possible additional</td>
      </tr>
      <tr>
        <td id="L2086" class="blob-num js-line-number" data-line-number="2086"></td>
        <td id="LC2086" class="blob-code js-file-line">   information providing AVPs should be discussed and possible be</td>
      </tr>
      <tr>
        <td id="L2087" class="blob-num js-line-number" data-line-number="2087"></td>
        <td id="LC2087" class="blob-code js-file-line">   recommended to be used.</td>
      </tr>
      <tr>
        <td id="L2088" class="blob-num js-line-number" data-line-number="2088"></td>
        <td id="LC2088" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2089" class="blob-num js-line-number" data-line-number="2089"></td>
        <td id="LC2089" class="blob-code js-file-line">Appendix B.  Examples</td>
      </tr>
      <tr>
        <td id="L2090" class="blob-num js-line-number" data-line-number="2090"></td>
        <td id="LC2090" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2091" class="blob-num js-line-number" data-line-number="2091"></td>
        <td id="LC2091" class="blob-code js-file-line">B.1.  Mix of Destination-Realm routed requests and Destination-Host</td>
      </tr>
      <tr>
        <td id="L2092" class="blob-num js-line-number" data-line-number="2092"></td>
        <td id="LC2092" class="blob-code js-file-line">      routed requests</td>
      </tr>
      <tr>
        <td id="L2093" class="blob-num js-line-number" data-line-number="2093"></td>
        <td id="LC2093" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2094" class="blob-num js-line-number" data-line-number="2094"></td>
        <td id="LC2094" class="blob-code js-file-line">   Diameter allows a client to optionally select the destination server</td>
      </tr>
      <tr>
        <td id="L2095" class="blob-num js-line-number" data-line-number="2095"></td>
        <td id="LC2095" class="blob-code js-file-line">   of a request, even if there are agents between the client and the</td>
      </tr>
      <tr>
        <td id="L2096" class="blob-num js-line-number" data-line-number="2096"></td>
        <td id="LC2096" class="blob-code js-file-line">   server.  The client does this using the Destination-Host AVP.  In</td>
      </tr>
      <tr>
        <td id="L2097" class="blob-num js-line-number" data-line-number="2097"></td>
        <td id="LC2097" class="blob-code js-file-line">   cases where the client does not care if a specific server receives</td>
      </tr>
      <tr>
        <td id="L2098" class="blob-num js-line-number" data-line-number="2098"></td>
        <td id="LC2098" class="blob-code js-file-line">   the request, it can omit Destination-Host and route the request using</td>
      </tr>
      <tr>
        <td id="L2099" class="blob-num js-line-number" data-line-number="2099"></td>
        <td id="LC2099" class="blob-code js-file-line">   the Destination-Realm and Application Id, effectively letting an</td>
      </tr>
      <tr>
        <td id="L2100" class="blob-num js-line-number" data-line-number="2100"></td>
        <td id="LC2100" class="blob-code js-file-line">   agent select the server.</td>
      </tr>
      <tr>
        <td id="L2101" class="blob-num js-line-number" data-line-number="2101"></td>
        <td id="LC2101" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2102" class="blob-num js-line-number" data-line-number="2102"></td>
        <td id="LC2102" class="blob-code js-file-line">   Clients commonly send mixtures of Destination-Host and Destination-</td>
      </tr>
      <tr>
        <td id="L2103" class="blob-num js-line-number" data-line-number="2103"></td>
        <td id="LC2103" class="blob-code js-file-line">   Realm routed requests.  For example, in an application that uses user</td>
      </tr>
      <tr>
        <td id="L2104" class="blob-num js-line-number" data-line-number="2104"></td>
        <td id="LC2104" class="blob-code js-file-line">   sessions, a client typically won&#39;t care which server handles a</td>
      </tr>
      <tr>
        <td id="L2105" class="blob-num js-line-number" data-line-number="2105"></td>
        <td id="LC2105" class="blob-code js-file-line">   session-initiating requests.  But once the session is initiated, the</td>
      </tr>
      <tr>
        <td id="L2106" class="blob-num js-line-number" data-line-number="2106"></td>
        <td id="LC2106" class="blob-code js-file-line">   client will send all subsequent requests in that session to the same</td>
      </tr>
      <tr>
        <td id="L2107" class="blob-num js-line-number" data-line-number="2107"></td>
        <td id="LC2107" class="blob-code js-file-line">   server.  Therefore it would send the initial request with no</td>
      </tr>
      <tr>
        <td id="L2108" class="blob-num js-line-number" data-line-number="2108"></td>
        <td id="LC2108" class="blob-code js-file-line">   Destination-Host AVP.  If it receives a successful answer, the client</td>
      </tr>
      <tr>
        <td id="L2109" class="blob-num js-line-number" data-line-number="2109"></td>
        <td id="LC2109" class="blob-code js-file-line">   would copy the Origin-Host value from the answer message into a</td>
      </tr>
      <tr>
        <td id="L2110" class="blob-num js-line-number" data-line-number="2110"></td>
        <td id="LC2110" class="blob-code js-file-line">   Destination-Host AVP in each subsequent request in the session.</td>
      </tr>
      <tr>
        <td id="L2111" class="blob-num js-line-number" data-line-number="2111"></td>
        <td id="LC2111" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2112" class="blob-num js-line-number" data-line-number="2112"></td>
        <td id="LC2112" class="blob-code js-file-line">   An agent has very limited options in applying overload abatement to</td>
      </tr>
      <tr>
        <td id="L2113" class="blob-num js-line-number" data-line-number="2113"></td>
        <td id="LC2113" class="blob-code js-file-line">   requests that contain Destination-Host AVPs.  It typically cannot</td>
      </tr>
      <tr>
        <td id="L2114" class="blob-num js-line-number" data-line-number="2114"></td>
        <td id="LC2114" class="blob-code js-file-line">   route the request to a different server than the one identified in</td>
      </tr>
      <tr>
        <td id="L2115" class="blob-num js-line-number" data-line-number="2115"></td>
        <td id="LC2115" class="blob-code js-file-line">   Destination-Host.  It&#39;s only remaining options are to throttle such</td>
      </tr>
      <tr>
        <td id="L2116" class="blob-num js-line-number" data-line-number="2116"></td>
        <td id="LC2116" class="blob-code js-file-line">   requests locally, or to send an overload report back towards the</td>
      </tr>
      <tr>
        <td id="L2117" class="blob-num js-line-number" data-line-number="2117"></td>
        <td id="LC2117" class="blob-code js-file-line">   client so the client can throttle the requests.  The second choice is</td>
      </tr>
      <tr>
        <td id="L2118" class="blob-num js-line-number" data-line-number="2118"></td>
        <td id="LC2118" class="blob-code js-file-line">   usually more efficient, since it prevents any throttled requests from</td>
      </tr>
      <tr>
        <td id="L2119" class="blob-num js-line-number" data-line-number="2119"></td>
        <td id="LC2119" class="blob-code js-file-line">   being sent in the first place, and removes the agent&#39;s need to send</td>
      </tr>
      <tr>
        <td id="L2120" class="blob-num js-line-number" data-line-number="2120"></td>
        <td id="LC2120" class="blob-code js-file-line">   errors back to the client for each dropped request.</td>
      </tr>
      <tr>
        <td id="L2121" class="blob-num js-line-number" data-line-number="2121"></td>
        <td id="LC2121" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2122" class="blob-num js-line-number" data-line-number="2122"></td>
        <td id="LC2122" class="blob-code js-file-line">   On the other hand, an agent has much more leeway to apply overload</td>
      </tr>
      <tr>
        <td id="L2123" class="blob-num js-line-number" data-line-number="2123"></td>
        <td id="LC2123" class="blob-code js-file-line">   abatement for requests that do not contain Destination-Host AVPs.  If</td>
      </tr>
      <tr>
        <td id="L2124" class="blob-num js-line-number" data-line-number="2124"></td>
        <td id="LC2124" class="blob-code js-file-line">   the agent has multiple servers in its peer table for the given realm</td>
      </tr>
      <tr>
        <td id="L2125" class="blob-num js-line-number" data-line-number="2125"></td>
        <td id="LC2125" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2126" class="blob-num js-line-number" data-line-number="2126"></td>
        <td id="LC2126" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2127" class="blob-num js-line-number" data-line-number="2127"></td>
        <td id="LC2127" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2128" class="blob-num js-line-number" data-line-number="2128"></td>
        <td id="LC2128" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 38]</td>
      </tr>
      <tr>
        <td id="L2129" class="blob-num js-line-number" data-line-number="2129"></td>
        <td id="LC2129" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2130" class="blob-num js-line-number" data-line-number="2130"></td>
        <td id="LC2130" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2131" class="blob-num js-line-number" data-line-number="2131"></td>
        <td id="LC2131" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2132" class="blob-num js-line-number" data-line-number="2132"></td>
        <td id="LC2132" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2133" class="blob-num js-line-number" data-line-number="2133"></td>
        <td id="LC2133" class="blob-code js-file-line">   and application, it can route such requests to other, less overloaded</td>
      </tr>
      <tr>
        <td id="L2134" class="blob-num js-line-number" data-line-number="2134"></td>
        <td id="LC2134" class="blob-code js-file-line">   servers.</td>
      </tr>
      <tr>
        <td id="L2135" class="blob-num js-line-number" data-line-number="2135"></td>
        <td id="LC2135" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2136" class="blob-num js-line-number" data-line-number="2136"></td>
        <td id="LC2136" class="blob-code js-file-line">   If the overload severity increases, the agent may reach a point where</td>
      </tr>
      <tr>
        <td id="L2137" class="blob-num js-line-number" data-line-number="2137"></td>
        <td id="LC2137" class="blob-code js-file-line">   there is not sufficient capacity across all servers to handle even</td>
      </tr>
      <tr>
        <td id="L2138" class="blob-num js-line-number" data-line-number="2138"></td>
        <td id="LC2138" class="blob-code js-file-line">   realm-routed requests.  In this case, the realm itself can be</td>
      </tr>
      <tr>
        <td id="L2139" class="blob-num js-line-number" data-line-number="2139"></td>
        <td id="LC2139" class="blob-code js-file-line">   considered overloaded.  The agent may need the client to throttle</td>
      </tr>
      <tr>
        <td id="L2140" class="blob-num js-line-number" data-line-number="2140"></td>
        <td id="LC2140" class="blob-code js-file-line">   realm-routed requests in addition to Destination-Host routed</td>
      </tr>
      <tr>
        <td id="L2141" class="blob-num js-line-number" data-line-number="2141"></td>
        <td id="LC2141" class="blob-code js-file-line">   requests.  The overload severity may be different for each server,</td>
      </tr>
      <tr>
        <td id="L2142" class="blob-num js-line-number" data-line-number="2142"></td>
        <td id="LC2142" class="blob-code js-file-line">   and the severity for the realm at is likely to be different than for</td>
      </tr>
      <tr>
        <td id="L2143" class="blob-num js-line-number" data-line-number="2143"></td>
        <td id="LC2143" class="blob-code js-file-line">   any specific server.  Therefore, an agent may need to forward, or</td>
      </tr>
      <tr>
        <td id="L2144" class="blob-num js-line-number" data-line-number="2144"></td>
        <td id="LC2144" class="blob-code js-file-line">   originate, multiple overload reports with differing ReportType and</td>
      </tr>
      <tr>
        <td id="L2145" class="blob-num js-line-number" data-line-number="2145"></td>
        <td id="LC2145" class="blob-code js-file-line">   Reduction-Percentage values.</td>
      </tr>
      <tr>
        <td id="L2146" class="blob-num js-line-number" data-line-number="2146"></td>
        <td id="LC2146" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2147" class="blob-num js-line-number" data-line-number="2147"></td>
        <td id="LC2147" class="blob-code js-file-line">   Figure 2 illustrates such a mixed-routing scenario.  In this example,</td>
      </tr>
      <tr>
        <td id="L2148" class="blob-num js-line-number" data-line-number="2148"></td>
        <td id="LC2148" class="blob-code js-file-line">   the servers S1, S2, and S3 handle requests for the realm &quot;realm&quot;.</td>
      </tr>
      <tr>
        <td id="L2149" class="blob-num js-line-number" data-line-number="2149"></td>
        <td id="LC2149" class="blob-code js-file-line">   Any of the three can handle requests that are not part of a user</td>
      </tr>
      <tr>
        <td id="L2150" class="blob-num js-line-number" data-line-number="2150"></td>
        <td id="LC2150" class="blob-code js-file-line">   session (i.e. routed by Destination-Realm).  But once a session is</td>
      </tr>
      <tr>
        <td id="L2151" class="blob-num js-line-number" data-line-number="2151"></td>
        <td id="LC2151" class="blob-code js-file-line">   established, all requests in that session must go to the same server.</td>
      </tr>
      <tr>
        <td id="L2152" class="blob-num js-line-number" data-line-number="2152"></td>
        <td id="LC2152" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2153" class="blob-num js-line-number" data-line-number="2153"></td>
        <td id="LC2153" class="blob-code js-file-line">        Client     Agent      S1        S2        S3</td>
      </tr>
      <tr>
        <td id="L2154" class="blob-num js-line-number" data-line-number="2154"></td>
        <td id="LC2154" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2155" class="blob-num js-line-number" data-line-number="2155"></td>
        <td id="LC2155" class="blob-code js-file-line">           |(1) Request (DR:realm)       |         |</td>
      </tr>
      <tr>
        <td id="L2156" class="blob-num js-line-number" data-line-number="2156"></td>
        <td id="LC2156" class="blob-code js-file-line">           |--------&gt;|         |         |         |</td>
      </tr>
      <tr>
        <td id="L2157" class="blob-num js-line-number" data-line-number="2157"></td>
        <td id="LC2157" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2158" class="blob-num js-line-number" data-line-number="2158"></td>
        <td id="LC2158" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2159" class="blob-num js-line-number" data-line-number="2159"></td>
        <td id="LC2159" class="blob-code js-file-line">           |         |Agent selects S1   |         |</td>
      </tr>
      <tr>
        <td id="L2160" class="blob-num js-line-number" data-line-number="2160"></td>
        <td id="LC2160" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2161" class="blob-num js-line-number" data-line-number="2161"></td>
        <td id="LC2161" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2162" class="blob-num js-line-number" data-line-number="2162"></td>
        <td id="LC2162" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2163" class="blob-num js-line-number" data-line-number="2163"></td>
        <td id="LC2163" class="blob-code js-file-line">           |         |(2) Request (DR:realm)       |</td>
      </tr>
      <tr>
        <td id="L2164" class="blob-num js-line-number" data-line-number="2164"></td>
        <td id="LC2164" class="blob-code js-file-line">           |         |--------&gt;|         |         |</td>
      </tr>
      <tr>
        <td id="L2165" class="blob-num js-line-number" data-line-number="2165"></td>
        <td id="LC2165" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2166" class="blob-num js-line-number" data-line-number="2166"></td>
        <td id="LC2166" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2167" class="blob-num js-line-number" data-line-number="2167"></td>
        <td id="LC2167" class="blob-code js-file-line">           |         |         |S1 overloaded, returns OLR</td>
      </tr>
      <tr>
        <td id="L2168" class="blob-num js-line-number" data-line-number="2168"></td>
        <td id="LC2168" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2169" class="blob-num js-line-number" data-line-number="2169"></td>
        <td id="LC2169" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2170" class="blob-num js-line-number" data-line-number="2170"></td>
        <td id="LC2170" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2171" class="blob-num js-line-number" data-line-number="2171"></td>
        <td id="LC2171" class="blob-code js-file-line">           |         |(3) Answer (OR:realm,OH:S1,OLR:RT=DH)</td>
      </tr>
      <tr>
        <td id="L2172" class="blob-num js-line-number" data-line-number="2172"></td>
        <td id="LC2172" class="blob-code js-file-line">           |         |&lt;--------|         |         |</td>
      </tr>
      <tr>
        <td id="L2173" class="blob-num js-line-number" data-line-number="2173"></td>
        <td id="LC2173" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2174" class="blob-num js-line-number" data-line-number="2174"></td>
        <td id="LC2174" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2175" class="blob-num js-line-number" data-line-number="2175"></td>
        <td id="LC2175" class="blob-code js-file-line">           |         |sees OLR,routes DR traffic to S2&amp;S3</td>
      </tr>
      <tr>
        <td id="L2176" class="blob-num js-line-number" data-line-number="2176"></td>
        <td id="LC2176" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2177" class="blob-num js-line-number" data-line-number="2177"></td>
        <td id="LC2177" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2178" class="blob-num js-line-number" data-line-number="2178"></td>
        <td id="LC2178" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2179" class="blob-num js-line-number" data-line-number="2179"></td>
        <td id="LC2179" class="blob-code js-file-line">           |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) |</td>
      </tr>
      <tr>
        <td id="L2180" class="blob-num js-line-number" data-line-number="2180"></td>
        <td id="LC2180" class="blob-code js-file-line">           |&lt;--------|         |         |         |</td>
      </tr>
      <tr>
        <td id="L2181" class="blob-num js-line-number" data-line-number="2181"></td>
        <td id="LC2181" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2182" class="blob-num js-line-number" data-line-number="2182"></td>
        <td id="LC2182" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2183" class="blob-num js-line-number" data-line-number="2183"></td>
        <td id="LC2183" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2184" class="blob-num js-line-number" data-line-number="2184"></td>
        <td id="LC2184" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 39]</td>
      </tr>
      <tr>
        <td id="L2185" class="blob-num js-line-number" data-line-number="2185"></td>
        <td id="LC2185" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2186" class="blob-num js-line-number" data-line-number="2186"></td>
        <td id="LC2186" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2187" class="blob-num js-line-number" data-line-number="2187"></td>
        <td id="LC2187" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2188" class="blob-num js-line-number" data-line-number="2188"></td>
        <td id="LC2188" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2189" class="blob-num js-line-number" data-line-number="2189"></td>
        <td id="LC2189" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2190" class="blob-num js-line-number" data-line-number="2190"></td>
        <td id="LC2190" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2191" class="blob-num js-line-number" data-line-number="2191"></td>
        <td id="LC2191" class="blob-code js-file-line">           |Client throttles requests with DH:S1   |</td>
      </tr>
      <tr>
        <td id="L2192" class="blob-num js-line-number" data-line-number="2192"></td>
        <td id="LC2192" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2193" class="blob-num js-line-number" data-line-number="2193"></td>
        <td id="LC2193" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2194" class="blob-num js-line-number" data-line-number="2194"></td>
        <td id="LC2194" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2195" class="blob-num js-line-number" data-line-number="2195"></td>
        <td id="LC2195" class="blob-code js-file-line">           |(5) Request (DR:realm)       |         |</td>
      </tr>
      <tr>
        <td id="L2196" class="blob-num js-line-number" data-line-number="2196"></td>
        <td id="LC2196" class="blob-code js-file-line">           |--------&gt;|         |         |         |</td>
      </tr>
      <tr>
        <td id="L2197" class="blob-num js-line-number" data-line-number="2197"></td>
        <td id="LC2197" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2198" class="blob-num js-line-number" data-line-number="2198"></td>
        <td id="LC2198" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2199" class="blob-num js-line-number" data-line-number="2199"></td>
        <td id="LC2199" class="blob-code js-file-line">           |         |Agent selects S2   |         |</td>
      </tr>
      <tr>
        <td id="L2200" class="blob-num js-line-number" data-line-number="2200"></td>
        <td id="LC2200" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2201" class="blob-num js-line-number" data-line-number="2201"></td>
        <td id="LC2201" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2202" class="blob-num js-line-number" data-line-number="2202"></td>
        <td id="LC2202" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2203" class="blob-num js-line-number" data-line-number="2203"></td>
        <td id="LC2203" class="blob-code js-file-line">           |         |(6) Request (DR:realm)       |</td>
      </tr>
      <tr>
        <td id="L2204" class="blob-num js-line-number" data-line-number="2204"></td>
        <td id="LC2204" class="blob-code js-file-line">           |         |------------------&gt;|         |</td>
      </tr>
      <tr>
        <td id="L2205" class="blob-num js-line-number" data-line-number="2205"></td>
        <td id="LC2205" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2206" class="blob-num js-line-number" data-line-number="2206"></td>
        <td id="LC2206" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2207" class="blob-num js-line-number" data-line-number="2207"></td>
        <td id="LC2207" class="blob-code js-file-line">           |         |         |         |S2 is overloaded...</td>
      </tr>
      <tr>
        <td id="L2208" class="blob-num js-line-number" data-line-number="2208"></td>
        <td id="LC2208" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2209" class="blob-num js-line-number" data-line-number="2209"></td>
        <td id="LC2209" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2210" class="blob-num js-line-number" data-line-number="2210"></td>
        <td id="LC2210" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2211" class="blob-num js-line-number" data-line-number="2211"></td>
        <td id="LC2211" class="blob-code js-file-line">           |         |(7) Answer (OH:S2, OLR:RT=DH)|</td>
      </tr>
      <tr>
        <td id="L2212" class="blob-num js-line-number" data-line-number="2212"></td>
        <td id="LC2212" class="blob-code js-file-line">           |         |&lt;------------------|         |</td>
      </tr>
      <tr>
        <td id="L2213" class="blob-num js-line-number" data-line-number="2213"></td>
        <td id="LC2213" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2214" class="blob-num js-line-number" data-line-number="2214"></td>
        <td id="LC2214" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2215" class="blob-num js-line-number" data-line-number="2215"></td>
        <td id="LC2215" class="blob-code js-file-line">           |         |Agent sees OLR, realm now overloaded</td>
      </tr>
      <tr>
        <td id="L2216" class="blob-num js-line-number" data-line-number="2216"></td>
        <td id="LC2216" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2217" class="blob-num js-line-number" data-line-number="2217"></td>
        <td id="LC2217" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2218" class="blob-num js-line-number" data-line-number="2218"></td>
        <td id="LC2218" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2219" class="blob-num js-line-number" data-line-number="2219"></td>
        <td id="LC2219" class="blob-code js-file-line">           |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)</td>
      </tr>
      <tr>
        <td id="L2220" class="blob-num js-line-number" data-line-number="2220"></td>
        <td id="LC2220" class="blob-code js-file-line">           |&lt;--------|         |         |         |</td>
      </tr>
      <tr>
        <td id="L2221" class="blob-num js-line-number" data-line-number="2221"></td>
        <td id="LC2221" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2222" class="blob-num js-line-number" data-line-number="2222"></td>
        <td id="LC2222" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2223" class="blob-num js-line-number" data-line-number="2223"></td>
        <td id="LC2223" class="blob-code js-file-line">           |Client throttles DH:S1, DH:S2, and DR:realm</td>
      </tr>
      <tr>
        <td id="L2224" class="blob-num js-line-number" data-line-number="2224"></td>
        <td id="LC2224" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2225" class="blob-num js-line-number" data-line-number="2225"></td>
        <td id="LC2225" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2226" class="blob-num js-line-number" data-line-number="2226"></td>
        <td id="LC2226" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2227" class="blob-num js-line-number" data-line-number="2227"></td>
        <td id="LC2227" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2228" class="blob-num js-line-number" data-line-number="2228"></td>
        <td id="LC2228" class="blob-code js-file-line">           |         |         |         |         |</td>
      </tr>
      <tr>
        <td id="L2229" class="blob-num js-line-number" data-line-number="2229"></td>
        <td id="LC2229" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2230" class="blob-num js-line-number" data-line-number="2230"></td>
        <td id="LC2230" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2231" class="blob-num js-line-number" data-line-number="2231"></td>
        <td id="LC2231" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2232" class="blob-num js-line-number" data-line-number="2232"></td>
        <td id="LC2232" class="blob-code js-file-line">      Figure 2: Mix of Destination-Host and Destination-Realm Routed</td>
      </tr>
      <tr>
        <td id="L2233" class="blob-num js-line-number" data-line-number="2233"></td>
        <td id="LC2233" class="blob-code js-file-line">                                 Requests</td>
      </tr>
      <tr>
        <td id="L2234" class="blob-num js-line-number" data-line-number="2234"></td>
        <td id="LC2234" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2235" class="blob-num js-line-number" data-line-number="2235"></td>
        <td id="LC2235" class="blob-code js-file-line">   1.  The client sends a request with no Destination-Host AVP (that is,</td>
      </tr>
      <tr>
        <td id="L2236" class="blob-num js-line-number" data-line-number="2236"></td>
        <td id="LC2236" class="blob-code js-file-line">       a Destination-Realm routed request.)</td>
      </tr>
      <tr>
        <td id="L2237" class="blob-num js-line-number" data-line-number="2237"></td>
        <td id="LC2237" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2238" class="blob-num js-line-number" data-line-number="2238"></td>
        <td id="LC2238" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2239" class="blob-num js-line-number" data-line-number="2239"></td>
        <td id="LC2239" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2240" class="blob-num js-line-number" data-line-number="2240"></td>
        <td id="LC2240" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 40]</td>
      </tr>
      <tr>
        <td id="L2241" class="blob-num js-line-number" data-line-number="2241"></td>
        <td id="LC2241" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2242" class="blob-num js-line-number" data-line-number="2242"></td>
        <td id="LC2242" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2243" class="blob-num js-line-number" data-line-number="2243"></td>
        <td id="LC2243" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2244" class="blob-num js-line-number" data-line-number="2244"></td>
        <td id="LC2244" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2245" class="blob-num js-line-number" data-line-number="2245"></td>
        <td id="LC2245" class="blob-code js-file-line">   2.  The agent follows local policy to select a server from its peer</td>
      </tr>
      <tr>
        <td id="L2246" class="blob-num js-line-number" data-line-number="2246"></td>
        <td id="LC2246" class="blob-code js-file-line">       table.  In this case, the agent selects S2 and forwards the</td>
      </tr>
      <tr>
        <td id="L2247" class="blob-num js-line-number" data-line-number="2247"></td>
        <td id="LC2247" class="blob-code js-file-line">       request.</td>
      </tr>
      <tr>
        <td id="L2248" class="blob-num js-line-number" data-line-number="2248"></td>
        <td id="LC2248" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2249" class="blob-num js-line-number" data-line-number="2249"></td>
        <td id="LC2249" class="blob-code js-file-line">   3.  S1 is overloaded.  It sends a answer indicating success, but also</td>
      </tr>
      <tr>
        <td id="L2250" class="blob-num js-line-number" data-line-number="2250"></td>
        <td id="LC2250" class="blob-code js-file-line">       includes an overload report.  Since the overload report only</td>
      </tr>
      <tr>
        <td id="L2251" class="blob-num js-line-number" data-line-number="2251"></td>
        <td id="LC2251" class="blob-code js-file-line">       applies to S1, the ReportType is &quot;Destination-Host&quot;.</td>
      </tr>
      <tr>
        <td id="L2252" class="blob-num js-line-number" data-line-number="2252"></td>
        <td id="LC2252" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2253" class="blob-num js-line-number" data-line-number="2253"></td>
        <td id="LC2253" class="blob-code js-file-line">   4.  The agent sees the overload report, and records that S1 is</td>
      </tr>
      <tr>
        <td id="L2254" class="blob-num js-line-number" data-line-number="2254"></td>
        <td id="LC2254" class="blob-code js-file-line">       overloaded by the value in the Reduction-Percentage AVP.  It</td>
      </tr>
      <tr>
        <td id="L2255" class="blob-num js-line-number" data-line-number="2255"></td>
        <td id="LC2255" class="blob-code js-file-line">       begins diverting the indicated percentage of realm-routed traffic</td>
      </tr>
      <tr>
        <td id="L2256" class="blob-num js-line-number" data-line-number="2256"></td>
        <td id="LC2256" class="blob-code js-file-line">       from S1 to S2 and S3.  Since it can&#39;t divert Destination-Host</td>
      </tr>
      <tr>
        <td id="L2257" class="blob-num js-line-number" data-line-number="2257"></td>
        <td id="LC2257" class="blob-code js-file-line">       routed traffic, it forwards the overload report to the client.</td>
      </tr>
      <tr>
        <td id="L2258" class="blob-num js-line-number" data-line-number="2258"></td>
        <td id="LC2258" class="blob-code js-file-line">       This effectively delegates the throttling of traffic with</td>
      </tr>
      <tr>
        <td id="L2259" class="blob-num js-line-number" data-line-number="2259"></td>
        <td id="LC2259" class="blob-code js-file-line">       Destination-Host:S1 to the client.</td>
      </tr>
      <tr>
        <td id="L2260" class="blob-num js-line-number" data-line-number="2260"></td>
        <td id="LC2260" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2261" class="blob-num js-line-number" data-line-number="2261"></td>
        <td id="LC2261" class="blob-code js-file-line">   5.  The client sends another Destination-Realm routed request.</td>
      </tr>
      <tr>
        <td id="L2262" class="blob-num js-line-number" data-line-number="2262"></td>
        <td id="LC2262" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2263" class="blob-num js-line-number" data-line-number="2263"></td>
        <td id="LC2263" class="blob-code js-file-line">   6.  The agent selects S2, and forwards the request.</td>
      </tr>
      <tr>
        <td id="L2264" class="blob-num js-line-number" data-line-number="2264"></td>
        <td id="LC2264" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2265" class="blob-num js-line-number" data-line-number="2265"></td>
        <td id="LC2265" class="blob-code js-file-line">   7.  It turns out that S2 is also overloaded, perhaps due to all that</td>
      </tr>
      <tr>
        <td id="L2266" class="blob-num js-line-number" data-line-number="2266"></td>
        <td id="LC2266" class="blob-code js-file-line">       traffic it took over for S1.  S2 returns an successful answer</td>
      </tr>
      <tr>
        <td id="L2267" class="blob-num js-line-number" data-line-number="2267"></td>
        <td id="LC2267" class="blob-code js-file-line">       containing an overload report.  Since this report only applies to</td>
      </tr>
      <tr>
        <td id="L2268" class="blob-num js-line-number" data-line-number="2268"></td>
        <td id="LC2268" class="blob-code js-file-line">       S2, the ReportType is &quot;Destination-Host&quot;.</td>
      </tr>
      <tr>
        <td id="L2269" class="blob-num js-line-number" data-line-number="2269"></td>
        <td id="LC2269" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2270" class="blob-num js-line-number" data-line-number="2270"></td>
        <td id="LC2270" class="blob-code js-file-line">   8.  The agent sees that S2 is also overloaded by the value in</td>
      </tr>
      <tr>
        <td id="L2271" class="blob-num js-line-number" data-line-number="2271"></td>
        <td id="LC2271" class="blob-code js-file-line">       Reduction-Percentage.  This value is probably different than the</td>
      </tr>
      <tr>
        <td id="L2272" class="blob-num js-line-number" data-line-number="2272"></td>
        <td id="LC2272" class="blob-code js-file-line">       value from S1&#39;s report.  The agent diverts the remaining traffic</td>
      </tr>
      <tr>
        <td id="L2273" class="blob-num js-line-number" data-line-number="2273"></td>
        <td id="LC2273" class="blob-code js-file-line">       to S3 as best as it can, but it calculates that the remaining</td>
      </tr>
      <tr>
        <td id="L2274" class="blob-num js-line-number" data-line-number="2274"></td>
        <td id="LC2274" class="blob-code js-file-line">       capacity across all three servers is no longer sufficient to</td>
      </tr>
      <tr>
        <td id="L2275" class="blob-num js-line-number" data-line-number="2275"></td>
        <td id="LC2275" class="blob-code js-file-line">       handle all of the realm-routed traffic.  This means the realm</td>
      </tr>
      <tr>
        <td id="L2276" class="blob-num js-line-number" data-line-number="2276"></td>
        <td id="LC2276" class="blob-code js-file-line">       itself is overloaded.  The realm&#39;s overload percentage is most</td>
      </tr>
      <tr>
        <td id="L2277" class="blob-num js-line-number" data-line-number="2277"></td>
        <td id="LC2277" class="blob-code js-file-line">       likely different than that for either S1 or S2.  The agent</td>
      </tr>
      <tr>
        <td id="L2278" class="blob-num js-line-number" data-line-number="2278"></td>
        <td id="LC2278" class="blob-code js-file-line">       forward&#39;s S2&#39;s report back to the client in the Diameter answer.</td>
      </tr>
      <tr>
        <td id="L2279" class="blob-num js-line-number" data-line-number="2279"></td>
        <td id="LC2279" class="blob-code js-file-line">       Additionally, the agent generates a new report for the realm of</td>
      </tr>
      <tr>
        <td id="L2280" class="blob-num js-line-number" data-line-number="2280"></td>
        <td id="LC2280" class="blob-code js-file-line">       &quot;realm&quot;, and inserts that report into the answer.  The client</td>
      </tr>
      <tr>
        <td id="L2281" class="blob-num js-line-number" data-line-number="2281"></td>
        <td id="LC2281" class="blob-code js-file-line">       throttles requests with Destination-Host:S1 at one rate, requests</td>
      </tr>
      <tr>
        <td id="L2282" class="blob-num js-line-number" data-line-number="2282"></td>
        <td id="LC2282" class="blob-code js-file-line">       with Destination-Host:S2 at another rate, and requests with no</td>
      </tr>
      <tr>
        <td id="L2283" class="blob-num js-line-number" data-line-number="2283"></td>
        <td id="LC2283" class="blob-code js-file-line">       Destination-Host AVP at yet a third rate.  (Since S3 has not</td>
      </tr>
      <tr>
        <td id="L2284" class="blob-num js-line-number" data-line-number="2284"></td>
        <td id="LC2284" class="blob-code js-file-line">       indicated overload, the client does not throttle requests with</td>
      </tr>
      <tr>
        <td id="L2285" class="blob-num js-line-number" data-line-number="2285"></td>
        <td id="LC2285" class="blob-code js-file-line">       Destination-Host:S3.)</td>
      </tr>
      <tr>
        <td id="L2286" class="blob-num js-line-number" data-line-number="2286"></td>
        <td id="LC2286" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2287" class="blob-num js-line-number" data-line-number="2287"></td>
        <td id="LC2287" class="blob-code js-file-line">Appendix C.  Restructuring of -02 version of the draft</td>
      </tr>
      <tr>
        <td id="L2288" class="blob-num js-line-number" data-line-number="2288"></td>
        <td id="LC2288" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2289" class="blob-num js-line-number" data-line-number="2289"></td>
        <td id="LC2289" class="blob-code js-file-line">   This section captures the initial plan for restructuring the DOIC</td>
      </tr>
      <tr>
        <td id="L2290" class="blob-num js-line-number" data-line-number="2290"></td>
        <td id="LC2290" class="blob-code js-file-line">   specification from the -02 version to the new -03 version.</td>
      </tr>
      <tr>
        <td id="L2291" class="blob-num js-line-number" data-line-number="2291"></td>
        <td id="LC2291" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2292" class="blob-num js-line-number" data-line-number="2292"></td>
        <td id="LC2292" class="blob-code js-file-line">   1. Introduction (non normative)</td>
      </tr>
      <tr>
        <td id="L2293" class="blob-num js-line-number" data-line-number="2293"></td>
        <td id="LC2293" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2294" class="blob-num js-line-number" data-line-number="2294"></td>
        <td id="LC2294" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2295" class="blob-num js-line-number" data-line-number="2295"></td>
        <td id="LC2295" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2296" class="blob-num js-line-number" data-line-number="2296"></td>
        <td id="LC2296" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 41]</td>
      </tr>
      <tr>
        <td id="L2297" class="blob-num js-line-number" data-line-number="2297"></td>
        <td id="LC2297" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2298" class="blob-num js-line-number" data-line-number="2298"></td>
        <td id="LC2298" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2299" class="blob-num js-line-number" data-line-number="2299"></td>
        <td id="LC2299" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2300" class="blob-num js-line-number" data-line-number="2300"></td>
        <td id="LC2300" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2301" class="blob-num js-line-number" data-line-number="2301"></td>
        <td id="LC2301" class="blob-code js-file-line">      -- Existing Text from section 1. --</td>
      </tr>
      <tr>
        <td id="L2302" class="blob-num js-line-number" data-line-number="2302"></td>
        <td id="LC2302" class="blob-code js-file-line">   2. Terminology and Abbreviations (non normative)</td>
      </tr>
      <tr>
        <td id="L2303" class="blob-num js-line-number" data-line-number="2303"></td>
        <td id="LC2303" class="blob-code js-file-line">      -- Existing Text from section 2. --</td>
      </tr>
      <tr>
        <td id="L2304" class="blob-num js-line-number" data-line-number="2304"></td>
        <td id="LC2304" class="blob-code js-file-line">   3. Solution Overview (Non normative)</td>
      </tr>
      <tr>
        <td id="L2305" class="blob-num js-line-number" data-line-number="2305"></td>
        <td id="LC2305" class="blob-code js-file-line">      -- Existing text from section 3. --</td>
      </tr>
      <tr>
        <td id="L2306" class="blob-num js-line-number" data-line-number="2306"></td>
        <td id="LC2306" class="blob-code js-file-line">     3.1 Overload Control Endpoints (Non normative)</td>
      </tr>
      <tr>
        <td id="L2307" class="blob-num js-line-number" data-line-number="2307"></td>
        <td id="LC2307" class="blob-code js-file-line">         -- New text leveraging text from existing section 5.1 --</td>
      </tr>
      <tr>
        <td id="L2308" class="blob-num js-line-number" data-line-number="2308"></td>
        <td id="LC2308" class="blob-code js-file-line">     3.2 Piggybacking Principle (Non normative)</td>
      </tr>
      <tr>
        <td id="L2309" class="blob-num js-line-number" data-line-number="2309"></td>
        <td id="LC2309" class="blob-code js-file-line">         -- Existing text from existing section 5.2, with enhancements --</td>
      </tr>
      <tr>
        <td id="L2310" class="blob-num js-line-number" data-line-number="2310"></td>
        <td id="LC2310" class="blob-code js-file-line">     3.3 DOIC Capability Discovery (Non normative)</td>
      </tr>
      <tr>
        <td id="L2311" class="blob-num js-line-number" data-line-number="2311"></td>
        <td id="LC2311" class="blob-code js-file-line">         -- New text leveraging text from existing section 5.3 --</td>
      </tr>
      <tr>
        <td id="L2312" class="blob-num js-line-number" data-line-number="2312"></td>
        <td id="LC2312" class="blob-code js-file-line">     3.4 DOIC Overload Condition Reporting (Non normative)</td>
      </tr>
      <tr>
        <td id="L2313" class="blob-num js-line-number" data-line-number="2313"></td>
        <td id="LC2313" class="blob-code js-file-line">         -- New text --</td>
      </tr>
      <tr>
        <td id="L2314" class="blob-num js-line-number" data-line-number="2314"></td>
        <td id="LC2314" class="blob-code js-file-line">     3.5 DOIC Extensibility (Non normative)</td>
      </tr>
      <tr>
        <td id="L2315" class="blob-num js-line-number" data-line-number="2315"></td>
        <td id="LC2315" class="blob-code js-file-line">         -- New text leveraging text from existing Section 5.4 --</td>
      </tr>
      <tr>
        <td id="L2316" class="blob-num js-line-number" data-line-number="2316"></td>
        <td id="LC2316" class="blob-code js-file-line">     3.5 Simplified Example Architecture (Non normative)</td>
      </tr>
      <tr>
        <td id="L2317" class="blob-num js-line-number" data-line-number="2317"></td>
        <td id="LC2317" class="blob-code js-file-line">         -- Existing text from section 3.1.6, with enhancements --</td>
      </tr>
      <tr>
        <td id="L2318" class="blob-num js-line-number" data-line-number="2318"></td>
        <td id="LC2318" class="blob-code js-file-line">     3.6 Considerations for Applications Integrating the DOIC Solution (Non normative)</td>
      </tr>
      <tr>
        <td id="L2319" class="blob-num js-line-number" data-line-number="2319"></td>
        <td id="LC2319" class="blob-code js-file-line">         -- New text --</td>
      </tr>
      <tr>
        <td id="L2320" class="blob-num js-line-number" data-line-number="2320"></td>
        <td id="LC2320" class="blob-code js-file-line">       3.6.1. Application Classification  (Non normative)</td>
      </tr>
      <tr>
        <td id="L2321" class="blob-num js-line-number" data-line-number="2321"></td>
        <td id="LC2321" class="blob-code js-file-line">              -- Existing text from section 3.1.1 --</td>
      </tr>
      <tr>
        <td id="L2322" class="blob-num js-line-number" data-line-number="2322"></td>
        <td id="LC2322" class="blob-code js-file-line">       3.6.2. Application Type Overload Implications  (Non normative)</td>
      </tr>
      <tr>
        <td id="L2323" class="blob-num js-line-number" data-line-number="2323"></td>
        <td id="LC2323" class="blob-code js-file-line">              -- Existing text from section 3.1.2 --</td>
      </tr>
      <tr>
        <td id="L2324" class="blob-num js-line-number" data-line-number="2324"></td>
        <td id="LC2324" class="blob-code js-file-line">       3.6.3. Request Transaction Classification  (Non normative)</td>
      </tr>
      <tr>
        <td id="L2325" class="blob-num js-line-number" data-line-number="2325"></td>
        <td id="LC2325" class="blob-code js-file-line">              -- Existing text from section 3.1.3 --</td>
      </tr>
      <tr>
        <td id="L2326" class="blob-num js-line-number" data-line-number="2326"></td>
        <td id="LC2326" class="blob-code js-file-line">       3.6.4. Request Type Overload Implications  (Non normative)</td>
      </tr>
      <tr>
        <td id="L2327" class="blob-num js-line-number" data-line-number="2327"></td>
        <td id="LC2327" class="blob-code js-file-line">              -- Existing text from section 3.1.4 --</td>
      </tr>
      <tr>
        <td id="L2328" class="blob-num js-line-number" data-line-number="2328"></td>
        <td id="LC2328" class="blob-code js-file-line">   4. Solution Procedures (Normative)</td>
      </tr>
      <tr>
        <td id="L2329" class="blob-num js-line-number" data-line-number="2329"></td>
        <td id="LC2329" class="blob-code js-file-line">     4.1 Capability Announcement (Normative)</td>
      </tr>
      <tr>
        <td id="L2330" class="blob-num js-line-number" data-line-number="2330"></td>
        <td id="LC2330" class="blob-code js-file-line">        -- Existing text from section 5.3 --</td>
      </tr>
      <tr>
        <td id="L2331" class="blob-num js-line-number" data-line-number="2331"></td>
        <td id="LC2331" class="blob-code js-file-line">       4.1.1. Reacting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L2332" class="blob-num js-line-number" data-line-number="2332"></td>
        <td id="LC2332" class="blob-code js-file-line">            -- Existing text from section 5.3.1 --</td>
      </tr>
      <tr>
        <td id="L2333" class="blob-num js-line-number" data-line-number="2333"></td>
        <td id="LC2333" class="blob-code js-file-line">       4.1.2. Reporting Node Behavior  (Normative)</td>
      </tr>
      <tr>
        <td id="L2334" class="blob-num js-line-number" data-line-number="2334"></td>
        <td id="LC2334" class="blob-code js-file-line">            -- Existing text from section 5.3.2 --</td>
      </tr>
      <tr>
        <td id="L2335" class="blob-num js-line-number" data-line-number="2335"></td>
        <td id="LC2335" class="blob-code js-file-line">       4.1.3. Agent Behavior  (Normative)</td>
      </tr>
      <tr>
        <td id="L2336" class="blob-num js-line-number" data-line-number="2336"></td>
        <td id="LC2336" class="blob-code js-file-line">            -- Existing text from section 5.3.3 --</td>
      </tr>
      <tr>
        <td id="L2337" class="blob-num js-line-number" data-line-number="2337"></td>
        <td id="LC2337" class="blob-code js-file-line">     4.2. Overload Report Processing (Normative)</td>
      </tr>
      <tr>
        <td id="L2338" class="blob-num js-line-number" data-line-number="2338"></td>
        <td id="LC2338" class="blob-code js-file-line">       4.2.1. Overload Control State (Normative)</td>
      </tr>
      <tr>
        <td id="L2339" class="blob-num js-line-number" data-line-number="2339"></td>
        <td id="LC2339" class="blob-code js-file-line">            -- Existing text from section 5.5.1 --</td>
      </tr>
      <tr>
        <td id="L2340" class="blob-num js-line-number" data-line-number="2340"></td>
        <td id="LC2340" class="blob-code js-file-line">       4.2.2. Reacting Node Behavior  (Normative)</td>
      </tr>
      <tr>
        <td id="L2341" class="blob-num js-line-number" data-line-number="2341"></td>
        <td id="LC2341" class="blob-code js-file-line">            -- Existing text from section 5.5.2 --</td>
      </tr>
      <tr>
        <td id="L2342" class="blob-num js-line-number" data-line-number="2342"></td>
        <td id="LC2342" class="blob-code js-file-line">       4.2.3. Reporting Node Behavior  (Normative)</td>
      </tr>
      <tr>
        <td id="L2343" class="blob-num js-line-number" data-line-number="2343"></td>
        <td id="LC2343" class="blob-code js-file-line">            -- Existing text from section 5.5.3 --</td>
      </tr>
      <tr>
        <td id="L2344" class="blob-num js-line-number" data-line-number="2344"></td>
        <td id="LC2344" class="blob-code js-file-line">       4.2.4. Agent Behavior  (Normative)</td>
      </tr>
      <tr>
        <td id="L2345" class="blob-num js-line-number" data-line-number="2345"></td>
        <td id="LC2345" class="blob-code js-file-line">            -- Existing text from section 5.5.4 --</td>
      </tr>
      <tr>
        <td id="L2346" class="blob-num js-line-number" data-line-number="2346"></td>
        <td id="LC2346" class="blob-code js-file-line">     4.3. Protocol Extensibility (Normative)</td>
      </tr>
      <tr>
        <td id="L2347" class="blob-num js-line-number" data-line-number="2347"></td>
        <td id="LC2347" class="blob-code js-file-line">        -- Existing text from section 5.4 --</td>
      </tr>
      <tr>
        <td id="L2348" class="blob-num js-line-number" data-line-number="2348"></td>
        <td id="LC2348" class="blob-code js-file-line">   5. Loss Algorithm (Normative)</td>
      </tr>
      <tr>
        <td id="L2349" class="blob-num js-line-number" data-line-number="2349"></td>
        <td id="LC2349" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2350" class="blob-num js-line-number" data-line-number="2350"></td>
        <td id="LC2350" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2351" class="blob-num js-line-number" data-line-number="2351"></td>
        <td id="LC2351" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2352" class="blob-num js-line-number" data-line-number="2352"></td>
        <td id="LC2352" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 42]</td>
      </tr>
      <tr>
        <td id="L2353" class="blob-num js-line-number" data-line-number="2353"></td>
        <td id="LC2353" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2354" class="blob-num js-line-number" data-line-number="2354"></td>
        <td id="LC2354" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2355" class="blob-num js-line-number" data-line-number="2355"></td>
        <td id="LC2355" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2356" class="blob-num js-line-number" data-line-number="2356"></td>
        <td id="LC2356" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2357" class="blob-num js-line-number" data-line-number="2357"></td>
        <td id="LC2357" class="blob-code js-file-line">      -- New text pulling from information spread through the document --</td>
      </tr>
      <tr>
        <td id="L2358" class="blob-num js-line-number" data-line-number="2358"></td>
        <td id="LC2358" class="blob-code js-file-line">     5.1. Overview (Non normative)</td>
      </tr>
      <tr>
        <td id="L2359" class="blob-num js-line-number" data-line-number="2359"></td>
        <td id="LC2359" class="blob-code js-file-line">          -- New text pulling from information spread through the document --</td>
      </tr>
      <tr>
        <td id="L2360" class="blob-num js-line-number" data-line-number="2360"></td>
        <td id="LC2360" class="blob-code js-file-line">     5.2. Reporting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L2361" class="blob-num js-line-number" data-line-number="2361"></td>
        <td id="LC2361" class="blob-code js-file-line">          -- New text pulling from information spread through the document --</td>
      </tr>
      <tr>
        <td id="L2362" class="blob-num js-line-number" data-line-number="2362"></td>
        <td id="LC2362" class="blob-code js-file-line">     5.3. Reacting Node Behavior (Normative)</td>
      </tr>
      <tr>
        <td id="L2363" class="blob-num js-line-number" data-line-number="2363"></td>
        <td id="LC2363" class="blob-code js-file-line">          -- New text pulling from information spread through the document --</td>
      </tr>
      <tr>
        <td id="L2364" class="blob-num js-line-number" data-line-number="2364"></td>
        <td id="LC2364" class="blob-code js-file-line">   6. Attribute Value Pairs (Normative)</td>
      </tr>
      <tr>
        <td id="L2365" class="blob-num js-line-number" data-line-number="2365"></td>
        <td id="LC2365" class="blob-code js-file-line">      -- Existing text from section 4. --</td>
      </tr>
      <tr>
        <td id="L2366" class="blob-num js-line-number" data-line-number="2366"></td>
        <td id="LC2366" class="blob-code js-file-line">     6.1. OC-Supported-Features AVP</td>
      </tr>
      <tr>
        <td id="L2367" class="blob-num js-line-number" data-line-number="2367"></td>
        <td id="LC2367" class="blob-code js-file-line">          -- Existing text from section 4.1 --</td>
      </tr>
      <tr>
        <td id="L2368" class="blob-num js-line-number" data-line-number="2368"></td>
        <td id="LC2368" class="blob-code js-file-line">     6.2. OC-Feature-Vector AVP</td>
      </tr>
      <tr>
        <td id="L2369" class="blob-num js-line-number" data-line-number="2369"></td>
        <td id="LC2369" class="blob-code js-file-line">          -- Existing text from section 4.2 --</td>
      </tr>
      <tr>
        <td id="L2370" class="blob-num js-line-number" data-line-number="2370"></td>
        <td id="LC2370" class="blob-code js-file-line">     6.3. OC-OLR AVP</td>
      </tr>
      <tr>
        <td id="L2371" class="blob-num js-line-number" data-line-number="2371"></td>
        <td id="LC2371" class="blob-code js-file-line">          -- Existing text from section 4.3 --</td>
      </tr>
      <tr>
        <td id="L2372" class="blob-num js-line-number" data-line-number="2372"></td>
        <td id="LC2372" class="blob-code js-file-line">     6.4. OC-Sequence-Number AVP</td>
      </tr>
      <tr>
        <td id="L2373" class="blob-num js-line-number" data-line-number="2373"></td>
        <td id="LC2373" class="blob-code js-file-line">          -- Existing text from section 4.4 --</td>
      </tr>
      <tr>
        <td id="L2374" class="blob-num js-line-number" data-line-number="2374"></td>
        <td id="LC2374" class="blob-code js-file-line">     6.5. OC-Validity-Duration AVP</td>
      </tr>
      <tr>
        <td id="L2375" class="blob-num js-line-number" data-line-number="2375"></td>
        <td id="LC2375" class="blob-code js-file-line">          -- Existing text from section 4.5 --</td>
      </tr>
      <tr>
        <td id="L2376" class="blob-num js-line-number" data-line-number="2376"></td>
        <td id="LC2376" class="blob-code js-file-line">     6.6. OC-Report-Type AVP</td>
      </tr>
      <tr>
        <td id="L2377" class="blob-num js-line-number" data-line-number="2377"></td>
        <td id="LC2377" class="blob-code js-file-line">          -- Existing text from section 4.6 --</td>
      </tr>
      <tr>
        <td id="L2378" class="blob-num js-line-number" data-line-number="2378"></td>
        <td id="LC2378" class="blob-code js-file-line">     6.7. OC-Reduction-Percentage AVP</td>
      </tr>
      <tr>
        <td id="L2379" class="blob-num js-line-number" data-line-number="2379"></td>
        <td id="LC2379" class="blob-code js-file-line">          -- Existing text from section 4.7 --</td>
      </tr>
      <tr>
        <td id="L2380" class="blob-num js-line-number" data-line-number="2380"></td>
        <td id="LC2380" class="blob-code js-file-line">     6.8. Attribute Value Pair flag rules</td>
      </tr>
      <tr>
        <td id="L2381" class="blob-num js-line-number" data-line-number="2381"></td>
        <td id="LC2381" class="blob-code js-file-line">          -- Existing text from section 4.8 --</td>
      </tr>
      <tr>
        <td id="L2382" class="blob-num js-line-number" data-line-number="2382"></td>
        <td id="LC2382" class="blob-code js-file-line">   7. Error Response Codes</td>
      </tr>
      <tr>
        <td id="L2383" class="blob-num js-line-number" data-line-number="2383"></td>
        <td id="LC2383" class="blob-code js-file-line">          -- New text based on resolution of issue --</td>
      </tr>
      <tr>
        <td id="L2384" class="blob-num js-line-number" data-line-number="2384"></td>
        <td id="LC2384" class="blob-code js-file-line">   8. IANA Considerations</td>
      </tr>
      <tr>
        <td id="L2385" class="blob-num js-line-number" data-line-number="2385"></td>
        <td id="LC2385" class="blob-code js-file-line">      -- Existing text from section 7. --</td>
      </tr>
      <tr>
        <td id="L2386" class="blob-num js-line-number" data-line-number="2386"></td>
        <td id="LC2386" class="blob-code js-file-line">     8.1. AVP codes</td>
      </tr>
      <tr>
        <td id="L2387" class="blob-num js-line-number" data-line-number="2387"></td>
        <td id="LC2387" class="blob-code js-file-line">          -- Existing text from section 7.1 --</td>
      </tr>
      <tr>
        <td id="L2388" class="blob-num js-line-number" data-line-number="2388"></td>
        <td id="LC2388" class="blob-code js-file-line">     8.2. New registries</td>
      </tr>
      <tr>
        <td id="L2389" class="blob-num js-line-number" data-line-number="2389"></td>
        <td id="LC2389" class="blob-code js-file-line">          -- Existing text from section 7.2 --</td>
      </tr>
      <tr>
        <td id="L2390" class="blob-num js-line-number" data-line-number="2390"></td>
        <td id="LC2390" class="blob-code js-file-line">   9. Security Considerations</td>
      </tr>
      <tr>
        <td id="L2391" class="blob-num js-line-number" data-line-number="2391"></td>
        <td id="LC2391" class="blob-code js-file-line">       -- Existing text from section 8. --</td>
      </tr>
      <tr>
        <td id="L2392" class="blob-num js-line-number" data-line-number="2392"></td>
        <td id="LC2392" class="blob-code js-file-line">     9.1. Potential Threat Modes</td>
      </tr>
      <tr>
        <td id="L2393" class="blob-num js-line-number" data-line-number="2393"></td>
        <td id="LC2393" class="blob-code js-file-line">           -- Existing text from section 8.1 --</td>
      </tr>
      <tr>
        <td id="L2394" class="blob-num js-line-number" data-line-number="2394"></td>
        <td id="LC2394" class="blob-code js-file-line">     9.2. Denial of Service Attacks</td>
      </tr>
      <tr>
        <td id="L2395" class="blob-num js-line-number" data-line-number="2395"></td>
        <td id="LC2395" class="blob-code js-file-line">           -- Existing text from section 8.2 --</td>
      </tr>
      <tr>
        <td id="L2396" class="blob-num js-line-number" data-line-number="2396"></td>
        <td id="LC2396" class="blob-code js-file-line">     9.3. Non-Compliant Nodes</td>
      </tr>
      <tr>
        <td id="L2397" class="blob-num js-line-number" data-line-number="2397"></td>
        <td id="LC2397" class="blob-code js-file-line">           -- Existing text from section 8.3 --</td>
      </tr>
      <tr>
        <td id="L2398" class="blob-num js-line-number" data-line-number="2398"></td>
        <td id="LC2398" class="blob-code js-file-line">     9.4. End-to End-Security Issues</td>
      </tr>
      <tr>
        <td id="L2399" class="blob-num js-line-number" data-line-number="2399"></td>
        <td id="LC2399" class="blob-code js-file-line">           -- Existing text from section 8.4 --</td>
      </tr>
      <tr>
        <td id="L2400" class="blob-num js-line-number" data-line-number="2400"></td>
        <td id="LC2400" class="blob-code js-file-line">   10. Contributors</td>
      </tr>
      <tr>
        <td id="L2401" class="blob-num js-line-number" data-line-number="2401"></td>
        <td id="LC2401" class="blob-code js-file-line">   11. References</td>
      </tr>
      <tr>
        <td id="L2402" class="blob-num js-line-number" data-line-number="2402"></td>
        <td id="LC2402" class="blob-code js-file-line">     11.1. Normative References</td>
      </tr>
      <tr>
        <td id="L2403" class="blob-num js-line-number" data-line-number="2403"></td>
        <td id="LC2403" class="blob-code js-file-line">     11.2. Informative References</td>
      </tr>
      <tr>
        <td id="L2404" class="blob-num js-line-number" data-line-number="2404"></td>
        <td id="LC2404" class="blob-code js-file-line">   Appendix A. Issues left for future specifications</td>
      </tr>
      <tr>
        <td id="L2405" class="blob-num js-line-number" data-line-number="2405"></td>
        <td id="LC2405" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2406" class="blob-num js-line-number" data-line-number="2406"></td>
        <td id="LC2406" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2407" class="blob-num js-line-number" data-line-number="2407"></td>
        <td id="LC2407" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2408" class="blob-num js-line-number" data-line-number="2408"></td>
        <td id="LC2408" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 43]</td>
      </tr>
      <tr>
        <td id="L2409" class="blob-num js-line-number" data-line-number="2409"></td>
        <td id="LC2409" class="blob-code js-file-line"></td>
      </tr>
      <tr>
        <td id="L2410" class="blob-num js-line-number" data-line-number="2410"></td>
        <td id="LC2410" class="blob-code js-file-line">Internet-Draft                    DOIC                    September 2014</td>
      </tr>
      <tr>
        <td id="L2411" class="blob-num js-line-number" data-line-number="2411"></td>
        <td id="LC2411" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2412" class="blob-num js-line-number" data-line-number="2412"></td>
        <td id="LC2412" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2413" class="blob-num js-line-number" data-line-number="2413"></td>
        <td id="LC2413" class="blob-code js-file-line">     A.1. Additional traffic abatement algorithms</td>
      </tr>
      <tr>
        <td id="L2414" class="blob-num js-line-number" data-line-number="2414"></td>
        <td id="LC2414" class="blob-code js-file-line">     A.2. Agent Overload</td>
      </tr>
      <tr>
        <td id="L2415" class="blob-num js-line-number" data-line-number="2415"></td>
        <td id="LC2415" class="blob-code js-file-line">     A.3. DIAMETER_TOO_BUSY clarifications</td>
      </tr>
      <tr>
        <td id="L2416" class="blob-num js-line-number" data-line-number="2416"></td>
        <td id="LC2416" class="blob-code js-file-line">     A.4. Per reacting node reports</td>
      </tr>
      <tr>
        <td id="L2417" class="blob-num js-line-number" data-line-number="2417"></td>
        <td id="LC2417" class="blob-code js-file-line">   Appendix B. Examples</td>
      </tr>
      <tr>
        <td id="L2418" class="blob-num js-line-number" data-line-number="2418"></td>
        <td id="LC2418" class="blob-code js-file-line">     B.1. Mix of Destination-Realm routed requests and Destination-</td>
      </tr>
      <tr>
        <td id="L2419" class="blob-num js-line-number" data-line-number="2419"></td>
        <td id="LC2419" class="blob-code js-file-line">           Host routed requests</td>
      </tr>
      <tr>
        <td id="L2420" class="blob-num js-line-number" data-line-number="2420"></td>
        <td id="LC2420" class="blob-code js-file-line">   Authors&#39; Addresses</td>
      </tr>
      <tr>
        <td id="L2421" class="blob-num js-line-number" data-line-number="2421"></td>
        <td id="LC2421" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2422" class="blob-num js-line-number" data-line-number="2422"></td>
        <td id="LC2422" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2423" class="blob-num js-line-number" data-line-number="2423"></td>
        <td id="LC2423" class="blob-code js-file-line">Authors&#39; Addresses</td>
      </tr>
      <tr>
        <td id="L2424" class="blob-num js-line-number" data-line-number="2424"></td>
        <td id="LC2424" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2425" class="blob-num js-line-number" data-line-number="2425"></td>
        <td id="LC2425" class="blob-code js-file-line">   Jouni Korhonen (editor)</td>
      </tr>
      <tr>
        <td id="L2426" class="blob-num js-line-number" data-line-number="2426"></td>
        <td id="LC2426" class="blob-code js-file-line">   Broadcom</td>
      </tr>
      <tr>
        <td id="L2427" class="blob-num js-line-number" data-line-number="2427"></td>
        <td id="LC2427" class="blob-code js-file-line">   Porkkalankatu 24</td>
      </tr>
      <tr>
        <td id="L2428" class="blob-num js-line-number" data-line-number="2428"></td>
        <td id="LC2428" class="blob-code js-file-line">   Helsinki  FIN-00180</td>
      </tr>
      <tr>
        <td id="L2429" class="blob-num js-line-number" data-line-number="2429"></td>
        <td id="LC2429" class="blob-code js-file-line">   Finland</td>
      </tr>
      <tr>
        <td id="L2430" class="blob-num js-line-number" data-line-number="2430"></td>
        <td id="LC2430" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2431" class="blob-num js-line-number" data-line-number="2431"></td>
        <td id="LC2431" class="blob-code js-file-line">   Email: jouni.nospam@gmail.com</td>
      </tr>
      <tr>
        <td id="L2432" class="blob-num js-line-number" data-line-number="2432"></td>
        <td id="LC2432" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2433" class="blob-num js-line-number" data-line-number="2433"></td>
        <td id="LC2433" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2434" class="blob-num js-line-number" data-line-number="2434"></td>
        <td id="LC2434" class="blob-code js-file-line">   Steve Donovan (editor)</td>
      </tr>
      <tr>
        <td id="L2435" class="blob-num js-line-number" data-line-number="2435"></td>
        <td id="LC2435" class="blob-code js-file-line">   Oracle</td>
      </tr>
      <tr>
        <td id="L2436" class="blob-num js-line-number" data-line-number="2436"></td>
        <td id="LC2436" class="blob-code js-file-line">   7460 Warren Parkway</td>
      </tr>
      <tr>
        <td id="L2437" class="blob-num js-line-number" data-line-number="2437"></td>
        <td id="LC2437" class="blob-code js-file-line">   Frisco, Texas  75034</td>
      </tr>
      <tr>
        <td id="L2438" class="blob-num js-line-number" data-line-number="2438"></td>
        <td id="LC2438" class="blob-code js-file-line">   United States</td>
      </tr>
      <tr>
        <td id="L2439" class="blob-num js-line-number" data-line-number="2439"></td>
        <td id="LC2439" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2440" class="blob-num js-line-number" data-line-number="2440"></td>
        <td id="LC2440" class="blob-code js-file-line">   Email: srdonovan@usdonovans.com</td>
      </tr>
      <tr>
        <td id="L2441" class="blob-num js-line-number" data-line-number="2441"></td>
        <td id="LC2441" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2442" class="blob-num js-line-number" data-line-number="2442"></td>
        <td id="LC2442" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2443" class="blob-num js-line-number" data-line-number="2443"></td>
        <td id="LC2443" class="blob-code js-file-line">   Ben Campbell</td>
      </tr>
      <tr>
        <td id="L2444" class="blob-num js-line-number" data-line-number="2444"></td>
        <td id="LC2444" class="blob-code js-file-line">   Oracle</td>
      </tr>
      <tr>
        <td id="L2445" class="blob-num js-line-number" data-line-number="2445"></td>
        <td id="LC2445" class="blob-code js-file-line">   7460 Warren Parkway</td>
      </tr>
      <tr>
        <td id="L2446" class="blob-num js-line-number" data-line-number="2446"></td>
        <td id="LC2446" class="blob-code js-file-line">   Frisco, Texas  75034</td>
      </tr>
      <tr>
        <td id="L2447" class="blob-num js-line-number" data-line-number="2447"></td>
        <td id="LC2447" class="blob-code js-file-line">   United States</td>
      </tr>
      <tr>
        <td id="L2448" class="blob-num js-line-number" data-line-number="2448"></td>
        <td id="LC2448" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2449" class="blob-num js-line-number" data-line-number="2449"></td>
        <td id="LC2449" class="blob-code js-file-line">   Email: ben@nostrum.com</td>
      </tr>
      <tr>
        <td id="L2450" class="blob-num js-line-number" data-line-number="2450"></td>
        <td id="LC2450" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2451" class="blob-num js-line-number" data-line-number="2451"></td>
        <td id="LC2451" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2452" class="blob-num js-line-number" data-line-number="2452"></td>
        <td id="LC2452" class="blob-code js-file-line">   Lionel Morand</td>
      </tr>
      <tr>
        <td id="L2453" class="blob-num js-line-number" data-line-number="2453"></td>
        <td id="LC2453" class="blob-code js-file-line">   Orange Labs</td>
      </tr>
      <tr>
        <td id="L2454" class="blob-num js-line-number" data-line-number="2454"></td>
        <td id="LC2454" class="blob-code js-file-line">   38/40 rue du General Leclerc</td>
      </tr>
      <tr>
        <td id="L2455" class="blob-num js-line-number" data-line-number="2455"></td>
        <td id="LC2455" class="blob-code js-file-line">   Issy-Les-Moulineaux Cedex 9  92794</td>
      </tr>
      <tr>
        <td id="L2456" class="blob-num js-line-number" data-line-number="2456"></td>
        <td id="LC2456" class="blob-code js-file-line">   France</td>
      </tr>
      <tr>
        <td id="L2457" class="blob-num js-line-number" data-line-number="2457"></td>
        <td id="LC2457" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2458" class="blob-num js-line-number" data-line-number="2458"></td>
        <td id="LC2458" class="blob-code js-file-line">   Phone: +33145296257</td>
      </tr>
      <tr>
        <td id="L2459" class="blob-num js-line-number" data-line-number="2459"></td>
        <td id="LC2459" class="blob-code js-file-line">   Email: lionel.morand@orange.com</td>
      </tr>
      <tr>
        <td id="L2460" class="blob-num js-line-number" data-line-number="2460"></td>
        <td id="LC2460" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2461" class="blob-num js-line-number" data-line-number="2461"></td>
        <td id="LC2461" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2462" class="blob-num js-line-number" data-line-number="2462"></td>
        <td id="LC2462" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2463" class="blob-num js-line-number" data-line-number="2463"></td>
        <td id="LC2463" class="blob-code js-file-line">
</td>
      </tr>
      <tr>
        <td id="L2464" class="blob-num js-line-number" data-line-number="2464"></td>
        <td id="LC2464" class="blob-code js-file-line">Korhonen, et al.          Expires March 9, 2015                [Page 44]</td>
      </tr>
</table>

  </div>

  </div>
</div>

<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
  <form accept-charset="UTF-8" class="js-jump-to-line-form">
    <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
    <button type="submit" class="button">Go</button>
  </form>
</div>

        </div>

      </div><!-- /.repo-container -->
      <div class="modal-backdrop"></div>
    </div><!-- /.container -->
  </div><!-- /.site -->


    </div><!-- /.wrapper -->

      <div class="container">
  <div class="site-footer" role="contentinfo">
    <ul class="site-footer-links right">
      <li><a href="https://status.github.com/">Status</a></li>
      <li><a href="http://developer.github.com">API</a></li>
      <li><a href="http://training.github.com">Training</a></li>
      <li><a href="http://shop.github.com">Shop</a></li>
      <li><a href="/blog">Blog</a></li>
      <li><a href="/about">About</a></li>

    </ul>

    <a href="/" aria-label="Homepage">
      <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
    </a>

    <ul class="site-footer-links">
      <li>&copy; 2014 <span title="0.13678s from github-fe136-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
        <li><a href="/site/terms">Terms</a></li>
        <li><a href="/site/privacy">Privacy</a></li>
        <li><a href="/security">Security</a></li>
        <li><a href="/contact">Contact</a></li>
    </ul>
  </div><!-- /.site-footer -->
</div><!-- /.container -->


    <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
  <div class="fullscreen-container js-suggester-container">
    <div class="textarea-wrap">
      <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents js-suggester-field" placeholder=""></textarea>
    </div>
  </div>
  <div class="fullscreen-sidebar">
    <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
      <span class="mega-octicon octicon-screen-normal"></span>
    </a>
    <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
      aria-label="Switch themes">
      <span class="octicon octicon-color-mode"></span>
    </a>
  </div>
</div>



    <div id="ajax-error-message" class="flash flash-error">
      <span class="octicon octicon-alert"></span>
      <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
      Something went wrong with that request. Please try again.
    </div>


      <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-a01bdc1aca276a761ef0fa0428e86678b940285a.js" type="text/javascript"></script>
      <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-1030fc9b11a7a959def8e71b7279f099ffd53f83.js" type="text/javascript"></script>
      
      
        <script async src="https://www.google-analytics.com/analytics.js"></script>
  </body>
</html>


--------------060503040209050300020606--


From nobody Thu Oct  9 09:38:00 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3B4971AD190 for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 09:37:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 3.38
X-Spam-Level: ***
X-Spam-Status: No, score=3.38 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, J_CHICKENPOX_24=0.6, J_CHICKENPOX_25=0.6, J_CHICKENPOX_36=0.6, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7g4Ym60O62pi for <dime@ietfa.amsl.com>; Thu,  9 Oct 2014 09:37:37 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D154C1AD182 for <dime@ietf.org>; Thu,  9 Oct 2014 09:37:36 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:62417 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XcGiU-0007a3-Dh for dime@ietf.org; Thu, 09 Oct 2014 09:37:35 -0700
Message-ID: <5436B9C5.7080007@usdonovans.com>
Date: Thu, 09 Oct 2014 11:37:25 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: dime@ietf.org
References: <5436A942.1010400@usdonovans.com>
In-Reply-To: <5436A942.1010400@usdonovans.com>
Content-Type: multipart/mixed; boundary="------------060008090505020207050209"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/f4j8ek5eLGyMDL9oYcUyTkStMsM
Subject: Re: [Dime] Prep for next weeks DIME interim meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Oct 2014 16:37:48 -0000

This is a multi-part message in MIME format.
--------------060008090505020207050209
Content-Type: multipart/alternative;
 boundary="------------040802070501020609060109"


--------------040802070501020609060109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Here's a cleaner version of the .txt document.

Steve

On 10/9/14, 10:26 AM, Steve Donovan wrote:
> All,
>
> As we prepare for next weeks interim meeting, please remember to use 
> the following as the source document:
>
> https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt 
>
>
> I've attached a copy for everyone's convenience.
>
> Regards,
>
> Steve
>
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


--------------040802070501020609060109
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Here's a cleaner version of the .txt document.<br>
    <br>
    Steve<br>
    <br>
    <div class="moz-cite-prefix">On 10/9/14, 10:26 AM, Steve Donovan
      wrote:<br>
    </div>
    <blockquote cite="mid:5436A942.1010400@usdonovans.com" type="cite">All,
      <br>
      <br>
      As we prepare for next weeks interim meeting, please remember to
      use the following as the source document:
      <br>
      <br>
<a class="moz-txt-link-freetext" href="https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt">https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt</a>
      <br>
      <br>
      I've attached a copy for everyone's convenience.
      <br>
      <br>
      Regards,
      <br>
      <br>
      Steve
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
DiME mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DiME@ietf.org">DiME@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/dime">https://www.ietf.org/mailman/listinfo/dime</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------040802070501020609060109--

--------------060008090505020207050209
Content-Type: text/plain; charset=UTF-8;
 name="draft-ietf-dime-ovli-04.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="draft-ietf-dime-ovli-04.txt"





Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.
Internet-Draft                                                  Broadcom
Intended status: Standards Track                         S. Donovan, Ed.
Expires: April 12, 2015                                      B. Campbell
                                                                  Oracle
                                                               L. Morand
                                                             Orange Labs
                                                         October 9, 2014


                Diameter Overload Indication Conveyance
                      draft-ietf-dime-ovli-04.txt

Abstract

   This specification documents a Diameter Overload Control (DOC) base
   solution and the dissemination of the overload report information.

Requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 12, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents



Korhonen, et al.         Expires April 12, 2015                 [Page 1]

Internet-Draft                    DOIC                      October 2014


   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   4
   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Piggybacking Principle (Non normative)  . . . . . . . . .   6
     3.2.  DOIC Capability Announcement (Non normative)  . . . . . .   7
     3.3.  DOIC Overload Condition Reporting (Non normative) . . . .   9
     3.4.  DOIC Extensibility (Non normative)  . . . . . . . . . . .  10
     3.5.  Simplified Example Architecture (Non normative) . . . . .  10
     3.6.  Considerations for Applications Integrating the DOIC
           Solution (Non normative)  . . . . . . . . . . . . . . . .  11
       3.6.1.  Application Classification  (Non normative) . . . . .  11
       3.6.2.  Application Type Overload Implications  (Non
               normative)  . . . . . . . . . . . . . . . . . . . . .  12
       3.6.3.  Request Transaction Classification  (Non normative) .  14
       3.6.4.  Request Type Overload Implications  (Non normative) .  14
   4.  Solution Procedures (Normative) . . . . . . . . . . . . . . .  16
     4.1.  Capability Announcement (Normative) . . . . . . . . . . .  16
       4.1.1.  Reacting Node Behavior (Normative)  . . . . . . . . .  16
       4.1.2.  Reporting Node Behavior  (Normative)  . . . . . . . .  17
       4.1.3.  Agent Behavior  (Normative) . . . . . . . . . . . . .  18
     4.2.  Overload Report Processing (Normative)  . . . . . . . . .  18
       4.2.1.  Overload Control State (Normative)  . . . . . . . . .  18
       4.2.2.  Reacting Node Behavior  (Normative) . . . . . . . . .  20
       4.2.3.  Reporting Node Behavior  (Normative)  . . . . . . . .  22
       4.2.4.  Agent Behavior  (Normative) . . . . . . . . . . . . .  22
     4.3.  Protocol Extensibility (Normative)  . . . . . . . . . . .  23
   5.  Loss Algorithm (Normative)  . . . . . . . . . . . . . . . . .  24
     5.1.  Overview (Non normative)  . . . . . . . . . . . . . . . .  24
     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25
     5.3.  Reporting Node Behavior (Normative) . . . . . . . . . . .  25
     5.4.  Reacting Node Behavior (Normative)  . . . . . . . . . . .  25
   6.  Attribute Value Pairs (Normative) . . . . . . . . . . . . . .  26
     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27
     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27
     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28
     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29
     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29
     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30



Korhonen, et al.         Expires April 12, 2015                 [Page 2]

Internet-Draft                    DOIC                      October 2014


     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31
     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31
   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32
     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32
     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  33
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  33
     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33
     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34
     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  35
     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  35
   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  36
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36
     11.2.  Informative References . . . . . . . . . . . . . . . . .  37
   Appendix A.  Issues left for future specifications  . . . . . . .  37
     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37
     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37
     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38
   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38
     B.1.  Mix of Destination-Realm routed requests and Destination-
           Host routed requests  . . . . . . . . . . . . . . . . . .  38
   Appendix C.  Restructuring of -02 version of the draft  . . . . .  41
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  44

1.  Introduction

   This specification defines a base solution for Diameter Overload
   Control (DOC), refered to as Diameter Overload Indication Conveyance
   (DOIC).  The requirements for the solution are described and
   discussed in the corresponding design requirements document
   [RFC7068].  Note that the overload control solution defined in this
   specification does not address all the requirements listed in
   [RFC7068].  A number of overload control related features are left
   for the future specifications.

   The solution defined in this specification addresses Diameter
   overload control between Diameter nodes that support the DOIC
   solution.  Furthermore, the solution is designed to apply to existing
   and future Diameter applications, requires no changes to the Diameter
   base protocol [RFC6733] and is deployable in environments where some
   Diameter nodes do not implement the Diameter overload control
   solution defined in this specification.








Korhonen, et al.         Expires April 12, 2015                 [Page 3]

Internet-Draft                    DOIC                      October 2014


2.  Terminology and Abbreviations

   Abatement Algorithm

      An algorithm requested by reporting nodes and used by reacting
      nodes to reduce the amount of traffic sent during an occurrence of
      overload control.

   Throttling

      Throttling is the reduction of the number of requests sent to an
      entity.  Throttling can include a client dropping requests, or an
      agent rejecting requests with appropriate error responses.
      Clients and agents can also choose to redirect throttled requests
      to some other entity or entities capable of handling them.

      Editor's note: Propose to add a definition of Abatement to include
      both throttling and diversion (redirecting of messages) actions.
      Then to modify this definition to include just the rejecting of
      requests and adding a definition of diversion.

   Reporting Node

      A Diameter node that generates an overload report.  (This may or
      may not be the overloaded node.)

   Reacting Node

      A Diameter node that consumes and acts upon a report.  Note that
      "act upon" does not necessarily mean the reacting node applies an
      abatement algorithm; it might decide to delegate that downstream,
      in which case it also becomes a "reporting node".

   Overload Control State (OCS)

      State describing an occurrence of overload control maintained by
      reporting and reacting nodes.

   Overload Report (OLR)

      A set of AVPs sent by a reporting node indicating the start or
      continuation of an occurrence of overload control.

3.  Solution Overview

   The Diameter Overload Information Conveyance (DOIC) mechanism allows
   Diameter nodes to request other nodes to perform overload abatement




Korhonen, et al.         Expires April 12, 2015                 [Page 4]

Internet-Draft                    DOIC                      October 2014


   actions, that is, actions to reduce the load offered to the
   overloaded node or realm.

   A Diameter node that supports DOIC is known as a "DOIC node".  Any
   Diameter node can act as a DOIC node, including clients, servers, and
   agents.  DOIC nodes are further divided into "Reporting Nodes" and
   "Reacting Nodes."  A reporting node requests overload abatement by
   sending an Overload Report (OLR) to one or more reacting nodes.

   A reacting node consumes OLRs, and performs whatever actions are
   needed to fulfill the abatement requests included in the OLRs.  A
   Reporting node may report overload on its own behalf, or on behalf of
   other (typically upstream) nodes.  Likewise, a reacting node may
   perform overload abatement on its own behalf, or on behalf of other
   (typically downstream) nodes.

   A node's role as a DOIC node is independent of its Diameter role.
   For example, Diameter relay and proxy agents may act as DOIC nodes,
   even though they are not endpoints in the Diameter sense.  Since
   Diameter enables bi-directional applications, where Diameter servers
   can send requests towards Diameter clients, a given Diameter node can
   simultaneously act as a reporting node and a reacting node.

   Likewise, a relay or proxy agent may act as a reacting node from the
   perspective of upstream nodes, and a reporting node from the
   perspective of downstream nodes.

   DOIC nodes do not generate new messages to carry DOIC related
   information.  Rather, they "piggyback" DOIC information over existing
   Diameter messages by inserting new AVPs into existing Diameter
   requests and responses.  Nodes indicate support for DOIC, and any
   needed DOIC parameters by inserting an OC_Supported_Features AVP
   (Section 6.2) into existing requests and responses.  Reporting nodes
   send OLRs by inserting OC-OLR AVPs (Section 6.3).

   A given OLR applies to the Diameter realm and application of the
   Diameter message that carries it.  If a reporting node supports more
   than one realm and/or application, it reports independently for each
   combination of realm and application.  Similarly, OC-Feature-Vector
   AVPs apply to the realm and application of the enclosing message.
   This implies that a node may support DOIC for one application and/or
   realm, but not another, and may indicate different DOIC parameters
   for each application and realm for which it supports DOIC.

   Reacting nodes perform overload abatement according to an agreed-upon
   abatement algorithm.  An abatement algorithm defines the meaning of
   the parameters of an OLR, and the procedures required for overload
   abatement.  This document specifies a single must-support algorithm,



Korhonen, et al.         Expires April 12, 2015                 [Page 5]

Internet-Draft                    DOIC                      October 2014


   namely the "loss" algorithm Section 5).  Future specifications may
   introduce new algorithms.

   Overload conditions may vary in scope.  For example, a single
   Diameter node may be overloaded, in which case reacting nodes may
   reasonably attempt to send throttled requests to other destinations
   or via other agents.  On the other hand, an entire Diameter realm may
   be overloaded, in which case such attempts would do harm.  DOIC OLRs
   have a concept of "report type" (Section 6.6), where the type defines
   such behaviors.  Report types are extensible.  This document defines
   report types for overload of a specific server, and for overload of
   an entire realm.

   A report of type host is sent to indicate the overload of a specific
   server for the application-id indicated in the transaction.  When
   receiving an OLR of type host, a reacting node applies overload
   abatement to what is referred to in this document as host-routed
   requests.  This is the set of requests that the reacting node knows
   will be served by a particular host, either due to the presence of a
   Destination-Host AVP, or by some other local knowledge on the part of
   the reacting node.  The reacting node applies overload abatement on
   those host-routed requests which the reacting node knows will be
   served by the server that matches the Origin-Host AVP of the received
   message that contained the received OLR of type host.

   A report type of realm is sent to indicate the overload of all
   servers in a realm for the application-id.  When receiving an OLR of
   type realm, a reacting node applies overload abatement to what is
   referred to in this document as realm-routed requests.  This is the
   set of requests that are not host-routed as defined in the previous
   paragraph.

   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes
   that are "adjacent" for DOIC purposes may not be adjacent from a
   Diameter, or transport, perspective.  For example, one or more
   Diameter agents that do not support DOIC may exist between a given
   pair of reporting and reacting nodes, as long as those agents pass
   unknown AVPs through unmolested.  The report types described in this
   document can safely pass through non-supporting agents.  This may not
   be true for report types defined in future specifications.  Documents
   that introduce new report types MUST describe any limitations on
   their use across non-supporting agents.

3.1.  Piggybacking Principle (Non normative)

   The overload control AVPs defined in this specification have been
   designed to be piggybacked on top of existing application message
   exchanges.  This is made possible by adding overload control top



Korhonen, et al.         Expires April 12, 2015                 [Page 6]

Internet-Draft                    DOIC                      October 2014


   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as
   optional AVPs into existing commands when the corresponding Command
   Code Format (CCF) specification allows adding new optional AVPs (see
   Section 1.3.4 of [RFC6733]).

   Reacting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP all request messages originated or relayed by
   the Diameter node.

   Reporting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in all answer messages originated or relayed
   by the Diameter node.  Reporting nodes also include overload reports
   using the OC-OLR AVP in answer messages.

      Note: There is no new Diameter application defined to carry
      overload related AVPs.  The DOIC AVPs are carried in existing
      Diameter application messages.

   Note that the overload control solution does not have fixed server
   and client roles.  The DOIC node role is determined based on the
   message type: whether the message is a request (i.e. sent by a
   "reacting node") or an answer (i.e. send by a "reporting node").
   Therefore, in a typical "client-server" deployment, the "client" MAY
   report its overload condition to the "server" for any server
   initiated message exchange.  An example of such is the server
   requesting a re-authentication from a client.

3.2.  DOIC Capability Announcement (Non normative)

   The DOIC solutions supports the ability for Diameter nodes to
   determine if other nodes in the path of a request support the
   solution.  This capability is refered to as DOIC Capability
   Announcement (DCA) and is separate from Diameter Capability Exchange.

   The DCA mechanism is built around the piggybacking principle used for
   transporting Diameter overload AVPs.  This includes both DCA AVPs and
   AVPs associated with Diameter overload reports.  This allows for the
   DCA AVPs to be carried across Diameter nodes that do not support the
   DOIC solution.

   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the
   Diameter overload features supported.

   The first node in the path of a Diameter request that supports the
   DOIC solution inserts the OC-Supported-Feature AVP in the request
   message.  This includes an indication that it supports the loss
   overload abatement algorithm defined in this specification (see
   Section 5).  This insures that there is at least one commonly



Korhonen, et al.         Expires April 12, 2015                 [Page 7]

Internet-Draft                    DOIC                      October 2014


   supported overload abatement algorithm between the reporting node and
   the reacting nodes in the path of the request.

      DOIC must support deployments where Diameter Clients and/or
      Diameter servers do not support the DOIC solution.  In this
      scenario, it is assumed that Diameter Agents that support the DOIC
      solution will handle overload abatement for the non supporting
      clients.  In this case the DOIC agent will insert the OC-
      Supporting-Features AVP in requests that do not already contain
      one, telling the reporting node that there is a DOIC node that
      will handle overload abatement.

   The reporting node inserts the OC-Supported-Feature AVP in all answer
   messages to requests that contained the OC-Supported-Feature AVP.
   The contents of the reporting node's OC-Supported-Feature AVP
   indicate the set of Diameter overload features supported by the
   reporting node with one exception.

   The reporting node only includes an indication of support for one
   overload abatement algorithm.  This is the algorithm that the
   reporting node intends to use should it enter an overload condition.
   Reacting nodes can use the indicated overload abatement algorithm to
   prepare for possible overload reports.

      Note that the loss algorithm defined in this document is a
      stateless abatement algorithm.  As a result it does not require
      any actions by reacting nodes prior to the receipt of an overload
      report.  Stateful abatement algorithms that base the abatement
      logic on a history of request messages sent might require reacting
      nodes to maintain state to insure that overload reports can be
      properly handled.

   The individual features supported by the DOIC nodes are indicated in
   the OC-Feature-Vector AVP.  Any semantics associated with the
   features will be defined in extension specifications that introduce
   the features.

   The DCA mechanism must also support the scenario where the set of
   features supported by the sender of a request and by agents in the
   path of a request differ.  In this case, the agent updates the OC-
   Supported-Feature AVP to reflect the mixture of the two sets of
   supported features.

      The logic to determine the content of the modified OC-Supported-
      Feature AVP is out-of-scope for this specification and is left to
      implementation decisions.  Care must be taken in doing so not to
      introduce interoperability issues for downstream or upstream DOIC
      nodes.



Korhonen, et al.         Expires April 12, 2015                 [Page 8]

Internet-Draft                    DOIC                      October 2014


3.3.  DOIC Overload Condition Reporting (Non normative)

   As with DOIC Capability Announcement, Overload Condition Reporting
   uses new AVPs (Section 6.3) to indicate an overload condition.

   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP
   includes the type of report, an overload report ID, the length of
   time that the report is valid and abatement algorithm specific AVPs.

   Two types of overload reports are defined in this document, host
   reports and realm reports.

   Host reports apply to traffic that is sent to a specific Diameter
   host.  The applies to requests that contain the Destination-Host AVP
   that contains a DiameterIdentity that matches that of the overload
   report.  These requests are referred to as host-routed requests.  A
   host report also applies to realm-routed requests, requests that do
   not have a Destination-Host AVP, when the selected route for the
   request is a connection to the impacted host.

   Realm reports apply to realm-routed requests for a specific realm as
   indicated in the Destination-Realm AVP.

   Reporting nodes are responsible for determining the need for a
   reduction of traffic.  The method for making this determination is
   implementation specific and depend on the type of overload report
   being generated.  A host report, for instance, will generally be
   generated by tracking utilization of resources required by the host
   to handle transactions for the the Diameter application.  A realm
   report will generally impact the traffic sent to multiple hosts and,
   as such, will typically require tracking the capacity of the servers
   able to handle realm-routed requests for the application.

   Once a reporting node determines the need for a reduction in traffic,
   it uses the DOIC defined AVPs to report on the condition.  These AVPs
   are included in answer messages sent or relayed by the reporting
   node.  The reporting node indicates the overload abatement algorithm
   that is to be used to handle the traffic reduction in the OC-
   Supported-Features AVP.  The OC-OLR AVP is used to communicate
   information about the requested reduction.

   Reacting nodes, upon receipt of an overload report, are responsible
   for applying the abatement algorithm to traffic impacted by the
   overload report.  The method used for that abatement is dependent on
   the abatement algorithm.  The loss abatement algorithm is defined in
   this document (Section 5).  Other abatement algorithms can be defined
   in extensions to the DOIC solutions.




Korhonen, et al.         Expires April 12, 2015                 [Page 9]

Internet-Draft                    DOIC                      October 2014


   As the conditions that lead to the generation of the overload report
   change the reporting node can send new overload reports requesting
   greater reduction if the condition gets worse or less reduction if
   the condition improves.  The reporting node sends an overload report
   with a duration of zero to indicate that the overlaod condition has
   ended and use of the abatement algorithm is no longer needed.

   The reacting node also determines when the overload report expires
   based on the OC-Validaty-Duration AVP in the overload report and
   stops applying the abatement algorithm when the report expires.

3.4.  DOIC Extensibility (Non normative)

   The DOIC solutions is designed to be extensible.  This extensibility
   is based on existing Diameter based extensibility mechanisms.

   There are multiple categories of extensions that are expected.  This
   includes the definition of new overload abatement algorithms, the
   definition of new report types and new definitions of the scope of
   messages impacted by an overload report.

   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes
   to communicate supported features.  The specific features supported
   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC
   extensions must define new values for the OC-Feature-Vector AVP.
   DOIC extensions also have the ability to add new AVPs to the OC-
   Supported-Features AVP, if additional information about the new
   feature is required to be communicate.

   Overload abatement algorithms use the OC-OLR AVP to communicate
   overload occurances.  This AVP can also be extended to add new AVPs
   allowing a reporting nodes to communicate additional information
   about handling an overload condition.

   If necessary, new extensions can also define new top level AVPs.  It
   is, however, recommended that DOIC extensions use the OC-Supported-
   Features and OC-OLR to carry all DOIC related AVPs.

3.5.  Simplified Example Architecture (Non normative)

   Figure 1 illustrates the simplified architecture for Diameter
   overload information conveyance.









Korhonen, et al.         Expires April 12, 2015                [Page 10]

Internet-Draft                    DOIC                      October 2014


    Realm X                                  Same or other Realms
   <--------------------------------------> <---------------------->


      +--^-----+                 : (optional) :
      |Diameter|                 :            :
      |Server A|--+     .--.     : +---^----+ :     .--.
      +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+
                  +--(        )--:-|  Agent |-:--(        )--|Diameter|
      +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |
      |Diameter|--+  `--(___.-'  :            :  `--(___.-'  +-----^--+
      |Server B|                 :            :
      +---^----+                 :            :

                          End-to-end Overload Indication
             1)  <----------------------------------------------->
                             Diameter Application Y

                  Overload Indication A    Overload Indication A'
             2)  <----------------------> <---------------------->
                 standard base protocol   standard base protocol



     Figure 1: Simplified architecture choices for overload indication
                                 delivery

   In Figure 1, the Diameter overload indication can be conveyed (1)
   end-to-end between servers and clients or (2) between servers and
   Diameter agent inside the realm and then between the Diameter agent
   and the clients when the Diameter agent acting as back-to-back-agent
   for DOIC purposes.

3.6.  Considerations for Applications Integrating the DOIC Solution (Non
      normative)

   THis section outlines considerations to be taken into account when
   integrating the DOIC solution into Diameter applications.

3.6.1.  Application Classification (Non normative)

   The following is a classification of Diameter applications and
   requests.  This discussion is meant to document factors that play
   into decisions made by the Diameter identity responsible for handling
   overload reports.

   Section 8.1 of [RFC6733] defines two state machines that imply two
   types of applications, session-less and session-based applications.



Korhonen, et al.         Expires April 12, 2015                [Page 11]

Internet-Draft                    DOIC                      October 2014


   The primary difference between these types of applications is the
   lifetime of Session-Ids.

   For session-based applications, the Session-Id is used to tie
   multiple requests into a single session.

   In session-less applications, the lifetime of the Session-Id is a
   single Diameter transaction, i.e. the session is implicitly
   terminated after a single Diameter transaction and a new Session-Id
   is generated for each Diameter request.

   For the purposes of this discussion, session-less applications are
   further divided into two types of applications:

   Stateless applications:

      Requests within a stateless application have no relationship to
      each other.  The 3GPP defined S13 application is an example of a
      stateless application [S13], --> where only a Diameter command is
      defined between a client and a server and no state is maintained
      between two consecutive transactions.

   Pseudo-session applications:

      Applications that do not rely on the Session-Id AVP for
      correlation of application messages related to the same session
      but use other session-related information in the Diameter requests
      for this purpose.  The 3GPP defined Cx application [Cx] is an
      example of a pseudo-session application.

   The Credit-Control application defined in [RFC4006] is an example of
   a Diameter session-based application.

   The handling of overload reports must take the type of application
   into consideration, as discussed in Section 3.6.2.

3.6.2.  Application Type Overload Implications (Non normative)

   This section discusses considerations for mitigating overload
   reported by a Diameter entity.  This discussion focuses on the type
   of application.  Section 3.6.3 discusses considerations for handling
   various request types when the target server is known to be in an
   overloaded state.

   These discussions assume that the strategy for mitigating the
   reported overload is to reduce the overall workload sent to the
   overloaded entity.  The concept of applying overload treatment to
   requests targeted for an overloaded Diameter entity is inherent to



Korhonen, et al.         Expires April 12, 2015                [Page 12]

Internet-Draft                    DOIC                      October 2014


   this discussion.  The method used to reduce offered load is not
   specified here but could include routing requests to another Diameter
   entity known to be able to handle them, or it could mean rejecting
   certain requests.  For a Diameter agent, rejecting requests will
   usually mean generating appropriate Diameter error responses.  For a
   Diameter client, rejecting requests will depend upon the application.
   For example, it could mean giving an indication to the entity
   requesting the Diameter service that the network is busy and to try
   again later.

   Stateless applications:

      By definition there is no relationship between individual requests
      in a stateless application.  As a result, when a request is sent
      or relayed to an overloaded Diameter entity - either a Diameter
      Server or a Diameter Agent - the sending or relaying entity can
      choose to apply the overload treatment to any request targeted for
      the overloaded entity.

   Pseudo-session applications:

      For pseudo-session applications, there is an implied ordering of
      requests.  As a result, decisions about which requests towards an
      overloaded entity to reject could take the command code of the
      request into consideration.  This generally means that
      transactions later in the sequence of transactions should be given
      more favorable treatment than messages earlier in the sequence.
      This is because more work has already been done by the Diameter
      network for those transactions that occur later in the sequence.
      Rejecting them could result in increasing the load on the network
      as the transactions earlier in the sequence might also need to be
      repeated.

   Session-based applications:

      Overload handling for session-based applications must take into
      consideration the work load associated with setting up and
      maintaining a session.  As such, the entity sending requests
      towards an overloaded Diameter entity for a session-based
      application might tend to reject new session requests prior to
      rejecting intra-session requests.  In addition, session ending
      requests might be given a lower probability of being rejected as
      rejecting session ending requests could result in session status
      being out of sync between the Diameter clients and servers.
      Application designers that would decide to reject mid-session
      requests will need to consider whether the rejection invalidates
      the session and any resulting session clean-up procedures.




Korhonen, et al.         Expires April 12, 2015                [Page 13]

Internet-Draft                    DOIC                      October 2014


3.6.3.  Request Transaction Classification (Non normative)

   Independent Request:

      An independent request is not correlated to any other requests
      and, as such, the lifetime of the session-id is constrained to an
      individual transaction.

   Session-Initiating Request:

      A session-initiating request is the initial message that
      establishes a Diameter session.  The ACR message defined in
      [RFC6733] is an example of a session-initiating request.

   Correlated Session-Initiating Request:

      There are cases when multiple session-initiated requests must be
      correlated and managed by the same Diameter server.  It is notably
      the case in the 3GPP PCC architecture [PCC], where multiple
      apparently independent Diameter application sessions are actually
      correlated and must be handled by the same Diameter server.

   Intra-Session Request:

      An intra session request is a request that uses the same Session-
      Id than the one used in a previous request.  An intra session
      request generally needs to be delivered to the server that handled
      the session creating request for the session.  The STR message
      defined in [RFC6733] is an example of an intra-session requests.

   Pseudo-Session Requests:

      Pseudo-session requests are independent requests and do not use
      the same Session-Id but are correlated by other session-related
      information contained in the request.  There exists Diameter
      applications that define an expected ordering of transactions.
      This sequencing of independent transactions results in a pseudo
      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx
      [Cx] application are examples of pseudo-session requests.

3.6.4.  Request Type Overload Implications (Non normative)

   The request classes identified in Section 3.6.3 have implications on
   decisions about which requests should be throttled first.  The
   following list of request treatment regarding throttling is provided
   as guidelines for application designers when implementing the
   Diameter overload control mechanism described in this document.  The




Korhonen, et al.         Expires April 12, 2015                [Page 14]

Internet-Draft                    DOIC                      October 2014


   exact behavior regarding throttling is a matter of local policy,
   unless specifically defined for the application.

   Independent requests:

      Independent requests can be given equal treatment when making
      throttling decisions.

   Session-initiating requests:

      Session-initiating requests represent more work than independent
      or intra-session requests.  Moreover, session-initiating requests
      are typically followed by other session-related requests.  As
      such, as the main objective of the overload control is to reduce
      the total number of requests sent to the overloaded entity,
      throttling decisions might favor allowing intra-session requests
      over session-initiating requests.  Individual session-initiating
      requests can be given equal treatment when making throttling
      decisions.

   Correlated session-initiating requests:

      A Request that results in a new binding, where the binding is used
      for routing of subsequent session-initiating requests to the same
      server, represents more work load than other requests.  As such,
      these requests might be throttled more frequently than other
      request types.

   Pseudo-session requests:

      Throttling decisions for pseudo-session requests can take into
      consideration where individual requests fit into the overall
      sequence of requests within the pseudo session.  Requests that are
      earlier in the sequence might be throttled more aggressively than
      requests that occur later in the sequence.

   Intra-session requests

      There are two classes of intra-sessions requests.  The first class
      consists of requests that terminate a session.  The second one
      contains the set of requests that are used by the Diameter client
      and server to maintain the ongoing session state.  Session
      terminating requests should be throttled less aggressively in
      order to gracefully terminate sessions, allow clean-up of the
      related resources (e.g. session state) and get rid of the need for
      other intra-session requests, reducing the session management
      impact on the overloaded entity.  The default handling of other
      intra-session requests might be to treat them equally when making



Korhonen, et al.         Expires April 12, 2015                [Page 15]

Internet-Draft                    DOIC                      October 2014


      throttling decisions.  There might also be application level
      considerations whether some request types are favored over others.

4.  Solution Procedures (Normative)

   This section outlines the normative behavior associated with the DOIC
   solution.

4.1.  Capability Announcement (Normative)

   This section defines DOIC Capability Announcement (DCA) behavior.

   The DCA procedures are used to indicate support for DOIC and support
   for DOIC features.  The DOIC features include overload abatement
   algorithms supported.  It might also include new report types or
   other extensions documented in the future.

   Diameter nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in messages sent or handled by the node.

   Diameter agents that support DOIC MUST ensure that all messages have
   the OC-Supporting-Features AVP.  If a message handled by the DOIC
   agent does not include the OC-Supported-Features AVP then the DOIC
   agent inserts the AVP.  If the message already has the AVP then the
   agent either leaves it unchanged in the relayed message or modifies
   it to reflect a mixed set of DOIC features.

4.1.1.  Reacting Node Behavior (Normative)

   A reacting node MUST include the OC-Supported-Features AVP in all
   request messages.

   A reacting node MUST include the OC-Feature-Vector AVP with an
   indication of the loss algorithm.

   A reacting node SHOULD indicate support for all other DOIC features
   it supports.

   An OC-Supported-Features AVP in answer messages indicates there is a
   reporting node for the transaction.  The reacting node MAY take
   action based on the features indicated in the OC-Feature-Vector AVP.

      Note that the loss abatement algorithm is the only feature
      described in this document and it does not require action to be
      taken by the reacting node except when the answer message also has
      an overload report.  This behavior is described in Section 4.2 and
      Section 5.




Korhonen, et al.         Expires April 12, 2015                [Page 16]

Internet-Draft                    DOIC                      October 2014


4.1.2.  Reporting Node Behavior (Normative)

   Upon receipt of a request message, a reporting node determines if
   there is a reacting node for the transaction based on the presence of
   the OC-Supported-Features AVP.

   Based on the content of the OC-Supported-Features AVP in the request
   message, the reporting node knows what overload control functionality
   supported by reacting node(s).  The reporting node then acts
   accordingly for the subsequent answer messages it initiates.

   If the reqeust message contains an OC-Supported-Features AVP then the
   reporting node MUST include the OC-Supported-Features AVP in the
   answer message for that transaction.

   The reporting node MUST indicate support for one and only one
   abatement algorithm in the OC-Feature-Vector AVP.  The abatement
   algorithm included MUST be from the set of abatement algorithms
   contained in the request messages OC-Supported-Features AVP.  The
   abatement algorithm included indicates the abatement algorithm the
   reporting node wants the reacting node to use when the reporting node
   enters an overload condition.

   The reporting node MUST NOT change the selected algorithm during a
   period of time that it is in an overload condition and, as a result,
   is sending OC-OLR AVPs in answer messages.

   The reporting node SHOULD indicate support for other DOIC features it
   supports and that apply to the transaction.

      Note that not all DOIC features will apply to all Diameter
      applications or deployment scenarios.  The features included in
      the OC-Feature-Vector AVP is based on local reporting node policy.

   The reporting node MUST NOT include the OC-Supported-Features AVP,
   OC-OLR AVP or any other overload control AVPs defined in extension
   drafts in response messages for transactions where the request
   message does not include the OC-Supported-Features AVP.  Lack of the
   OC-Supported-Features AVP in the request message indicates that there
   is no reacting node for the transaction.

   An agent MAY modify the OC-Supported-Features AVP carried in answer
   messages.








Korhonen, et al.         Expires April 12, 2015                [Page 17]

Internet-Draft                    DOIC                      October 2014


4.1.3.  Agent Behavior (Normative)

   Editor's note -- Need to add this section.

4.2.  Overload Report Processing (Normative)

4.2.1.  Overload Control State (Normative)

   Both reacting and reporting nodes maintain an overload control state
   (OCS) for active overload reports.

4.2.1.1.  Overload Control State for Reacting Nodes

   A reacting node maintains the following OCS per supported Diameter
   application:

   o  A host-type Overload Control State for each Destination-Host
      towards which it sends host-type requests and

   o  A realm-type Overload Control State for each Destination-Realm
      towards which it sends realm-type requests.

   A host-type Overload Control State may be identified by the pair of
   Application-Id and Destination-Host.  A realm-type Overload Control
   State may be identified by the pair of Application-Id and
   Destination-Realm.  The host-type/realm-type Overload Control State
   for a given pair of Application and Destination-Host / Destination-
   Realm could include the following information:

   o  Sequence number (as received in OC-OLR)

   o  Time of expiry (deviated from validity duration as received in OC-
      OLR and time of reception)

   o  Selected Abatement Algorithm (as received in OC-Supported-
      Features)

   o  Algorithm specific input data (as received within OC-OLR, e.g.
      Reduction Percentage for Loss)

4.2.1.2.  Overload Control States for Reporting Nodes

   A reporting node maintains per supported Diameter application and per
   supported (and eventually selected) Abatement Algorithm an Overload
   Control State.

   An Overload Control State may be identified by the pair of
   Application-Id and supported Abatement Algorithm.



Korhonen, et al.         Expires April 12, 2015                [Page 18]

Internet-Draft                    DOIC                      October 2014


   The Overload Control State for a given pair of Application and
   Abatement Algorithm could include the information:

   o  Sequence number

   o  Validity Duration and Expiry Time

   o  Algorithm specific input data (e.g.  Reduction Percentage for
      Loss)

   Overload Control States for reporting nodes containing a validity
   duration of 0 sec. should not expire before any previously sent
   (stale) OLR has timed out at any reacting node.

   Editor's note: This statement is unclear and contradictory with other
   statements.  A validity timer of zero seconds indicates that the
   overload condition has ended and abatement is no longer requested.

4.2.1.3.  Maintaining Overload Control State

   Reacting nodes create a host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless
   such host-type OCS already exists.

   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id
   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP
   unless such realm type OCS already exists.

   Reacting nodes delete an OCS when it expires (i.e. when current time
   minus reception time is greater than validity duration).

   Editor's note: Reacting nodes also delete on OCS with an updated OLR
   is received with a validity duration of zero.

   Reacting nodes update the host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a
   sequence number higher than the stored sequence number.

   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id
   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with
   a sequence number higher than the stored sequence number.






Korhonen, et al.         Expires April 12, 2015                [Page 19]

Internet-Draft                    DOIC                      October 2014


   Reacting nodes do not delete an OCS when receiving an answer message
   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no
   change").

   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)
   when receiving a request of application app-id containing an OC-
   Supported-Features AVP indicating support of the Abatement Algorithm
   Alg (which the reporting node selects) while being overloaded, unless
   such OCS already exists.

   Reporting nodes delete an OCS when it expires.

   Editor's note: Reporting nodes should send updated overload reports
   with a validity duration of zero for a period of time after an OCS
   expires or is removed due to the overload condition ending.

   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)
   when they detect the need to modify the requested amount of
   application app-id traffic reduction.

4.2.2.  Reacting Node Behavior (Normative)

   Once a reacting node receives an OC-OLR AVP from a reporting node, it
   applies traffic abatement based on the selected algorithm with the
   reporting node and the current overload condition.  The reacting node
   learns the reporting node supported abatement algorithms directly
   from the received answer message containing the OC-Supported-Features
   AVP.

   The received OC-Supported-Features AVP does not change the existing
   overload condition and/or traffic abatement algorithm settings if the
   OC-Sequence-Number AVP contains a value that is equal to the
   previously received/recorded value.  If the OC-Supported-Features AVP
   is received for the first time for the reporting node or the OC-
   Sequence-Number AVP value is less than the previously received/
   recorded value (and is outside the valid overflow window), then the
   sequence number is stale (e.g. an intentional or unintentional
   replay) and SHOULD be silently discarded.

   As described in Section 6.3, the OC-OLR AVP contains the necessary
   information for the overload condition on the reporting node.

   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting
   node learns whether the overload condition report concerns a specific
   host (as identified by the Origin-Host AVP of the answer message
   containing the OC-OLR AVP) or the entire realm (as identified by the
   Origin-Realm AVP of the answer message containing the OC-OLR AVP).
   The reacting node learns the Diameter application to which the



Korhonen, et al.         Expires April 12, 2015                [Page 20]

Internet-Draft                    DOIC                      October 2014


   overload report applies from the Application-ID of the answer message
   containing the OC-OLR AVP.  The reacting node MUST use this
   information as an input for its traffic abatement algorithm.  The
   idea is that the reacting node applies different handling of the
   traffic abatement, whether sent request messages are targeted to a
   specific host (identified by the Diameter-Host AVP in the request) or
   to any host in a realm (when only the Destination-Realm AVP is
   present in the request).  Note that future specifications MAY define
   new OC-Report-Type AVP values that imply different handling of the
   OC-OLR AVP.  For example, in a form of new additional AVPs inside the
   Grouped OC-OLR AVP that would define report target in a finer
   granularity than just a host.

      Editor's note: The above behavior for Realm reports is
      inconsistent with the definition of realm reports in section
      Section 6.6.

   If the OC-OLR AVP is received for the first time, the reacting node
   MUST create overload control state associated with the related realm
   or a specific host in the realm identified in the message carrying
   the OC-OLR AVP, as described in Section 4.2.1.

   If the value of the OC-Sequence-Number AVP contained in the received
   OC-OLR AVP is equal to or less than the value stored in an existing
   overload control state, the received OC-OLR AVP SHOULD be silently
   discarded.  If the value of the OC-Sequence-Number AVP contained in
   the received OC-OLR AVP is greater than the value stored in an
   existing overload control state or there is no previously recorded
   sequence number, the reacting node MUST update the overload control
   state associated with the realm or the specific node in the realm.

   When an overload control state is created or updated, the reacting
   node MUST apply the traffic abatement requested in the OC-OLR AVP
   using the algorithm announced in the OC-Supported-Features AVP
   contained in the received answer message along with the OC-OLR AVP.

   The validity duration of the overload information contained in the
   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration
   AVP or is implicitly equals to the default value (5 seconds) if the
   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain
   the validity duration in the overload control state.  Once the
   validity duration times out, the reacting node MUST assume the
   overload condition reported in a previous OC-OLR AVP has ended.

   A value of zero ("0") received in the OC-Validity-Duration in an
   updated overload report indicates that the overload condition has
   ended and that the overload state is no longer valid.




Korhonen, et al.         Expires April 12, 2015                [Page 21]

Internet-Draft                    DOIC                      October 2014


   In the case that the validity duration expires or is explicitly
   signaled as being no longer valid the state associated with the
   overload report MUST be removed and any abatement associated with the
   overload report MUST be ended in a controlled fashion.  After
   removing the overload state the sequence number MUST NOT be used for
   future comparisons of sequence numbers.

4.2.3.  Reporting Node Behavior (Normative)

   A reporting node is a Diameter node inserting an OC-OLR AVP in a
   Diameter message in order to inform a reacting node about an overload
   condition and request Diameter traffic abatement.

   The operation on the reporting node is straight forward.  The
   reporting node learns the capabilities of the reacting node when it
   receives the OC-Supported-Features AVP as part of any Diameter
   request message.  If the reporting node shares at least one common
   feature with the reacting node, then the DOIC can be enabled between
   these DOIC nodes See Section 4.1 for further discussion on the
   capability and feature announcement.

   When a traffic reduction is required due to an overload condition and
   the overload control solution is supported by the sender of the
   Diameter request, the reporting node MUST include an OC-Supported-
   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.
   The OC-OLR AVP contains the required traffic reduction and the OC-
   Supported-Features AVP indicates the traffic abatement algorithm to
   apply.  This algorithm MUST be one of the algorithms advertised by
   the request sender.

   A reporting node MAY rely on the OC-Validity-Duration AVP values for
   the implicit overload control state cleanup on the reacting node.
   However, it is RECOMMENDED that the reporting node always explicitly
   indicates the end of a overload condition.

   The reporting node SHOULD indicate the end of an overload occurrence
   by sending a new OLR with OC-Validity-Duration set to a value of zero
   ("0").  The reporting node SHOULD insure that all reacting nodes
   receive the updated overload report.

4.2.4.  Agent Behavior (Normative)

   Editor's note -- Need to add this section.








Korhonen, et al.         Expires April 12, 2015                [Page 22]

Internet-Draft                    DOIC                      October 2014


4.3.  Protocol Extensibility (Normative)

   The overload control solution can be extended, e.g. with new traffic
   abatement algorithms, new report types or other new functionality.

   When defining a new extension a new feature bit MUST be defined for
   the OC-Feature-Vector.  This feature bit is used to communicate
   support for the new feature.

   The extention may also define new AVPs for use in DOIC Capability
   Anouncement and for use in DOIC Overload reporting.  These new AVP
   should be defined to be extensions to the OC-Supported-Features and
   OC-OLR AVPs defined in this document.

   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.  More specifically, the sub-AVPs inside the
   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.
   However, when overload control AVPs are piggybacked on top of an
   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.

   The handling of feature bits in the OC-Feature-Vector AVP that are
   not associated with overload abatement algorithms MUST be specified
   by the extensions that define the features.

   When defining new report type values, the corresponding specification
   MUST define the semantics of the new report types and how they affect
   the OC-OLR AVP handling.  The specification MUST also reserve a
   corresponding new feature, see the OC-Supported-Features and OC-
   Feature-Vector AVPs.

   The OC-OLR AVP can be expanded with optional sub-AVPs only if a
   legacy implementation can safely ignore them without breaking
   backward compatibility for the given OC-Report-Type AVP value implied
   report handling semantics.  If the new sub-AVPs imply new semantics
   for handling the indicated report type, then a new OC-Report-Type AVP
   value MUST be defined.

   New features (feature bits in the OC-Feature-Vector AVP) and report
   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As
   with any Diameter specification, new AVPs MUST also be registered
   with IANA.  See Section 8 for the required procedures.








Korhonen, et al.         Expires April 12, 2015                [Page 23]

Internet-Draft                    DOIC                      October 2014


5.  Loss Algorithm (Normative)

   This section documents the Diameter overload loss abatement
   algorithm.

5.1.  Overview (Non normative)

   The DOIC specification supports the ability for multiple overload
   abatement algorithms to be specified.  The abatement algorithm used
   for any instance of overload is determined by the Diameter Overload
   Capability Announcement process documented in Section 4.1.

   The loss algorithm described in this section is the default algorithm
   that must be supported by all Diameter nodes that support DOIC.

   The loss algorithm is designed to be a straightforward and stateless
   overload abatement algorithm.  It is used by reporting nodes to
   request a percentage reduction in the amount of traffic sent.  The
   traffic impacted by the requested reduction depends on the type of
   overload report.

   Reporting nodes use a strategy of applying abatement logic to the
   requested percentage of request messages sent (or handled in the case
   of agents) by the reacting node that are impacted by the overload
   report.

   From a conceptual level, the logic at the reacting node could be
   outlined as follows.  In this discussion assume that the reacting
   node is also the sending node.

   1.  An overload report is received and the associated overload state
       is saved by the reacting node.

   2.  A new Diameter request is generated by the application running on
       the reacting node.

   3.  The reacting node determines that an active overload report
       applies to the request.

   4.  The reacting node determines if abatement should be applied to
       the request.  One approach that could be taken would be to select
       a random number between 1 and 100.  If the random number is less
       than the indicated reduction percentage then the request is given
       abatement treatment, otherwise the request is given normal
       routing treatment.






Korhonen, et al.         Expires April 12, 2015                [Page 24]

Internet-Draft                    DOIC                      October 2014


5.2.  Use of OC-Reduction-Percentage AVP

   A reporting node using the loss algorithm must use the OC-Reduction-
   Percentage AVP (Section 6.7 to indicated the desired percentage of
   traffic reduction.)

      Editor's note: The above duplicates what is in the OC-Reduction-
      Percentage AVP section can probably be removed.

5.3.  Reporting Node Behavior (Normative)

   The method a reporting nodes uses to determine the amount of traffic
   reduction required to address an overload condition is an
   implementation decision.

   When a reporting node that has selected the loss abatement algorithm
   determines the need to request a traffic reduction it must include an
   OC-OLR AVP in all response messages.

   The reporting node must indicate a percentage reduction in the OC-
   Reduction-Percentage AVP.

   The reporting node may change the reduction percentage in subsequent
   overload reports.  When doing so the reporting node must conform to
   overload report handing specified in Section 4.2.3.

   When the reporting node determines it no longer needs a reduction in
   traffic the reporting node should send an overload report indicating
   the overload report is no longer valid, as specified in
   Section 4.2.3.

5.4.  Reacting Node Behavior (Normative)

   The method a reacting node uses to determine which request messages
   are given abatement treatment is an implementation decision.

   When receiving an OC-OLR in an answer message where the algorithm
   indicated in the OC-Supported-Features AVP is the loss algorithm, the
   reacting node must attempt to apply abatement treatment to the
   requested percentage of request messages sent.

      Note: the loss algorithm is a stateless algorithm.  As a result,
      the reacting node does not guarantee that there will be an
      absolute reduction in traffic sent.  Rather, it guarantees that
      the requested percentage of new requests will be given abatement
      treatment.





Korhonen, et al.         Expires April 12, 2015                [Page 25]

Internet-Draft                    DOIC                      October 2014


   If reacting node comes out of the 100 percent traffic reduction as a
   result of the overload report timing out, the following concerns are
   RECOMMENDED to be applied.  The reacting node sending the traffic
   should be conservative and, for example, first send "probe" messages
   to learn the overload condition of the overloaded node before
   converging to any traffic amount/rate decided by the sender.  Similar
   concerns apply in all cases when the overload report times out unless
   the previous overload report stated 0 percent reduction.

      Editor's note: Need to add additional guidance to slowly increase
      the rate of traffic sent to avoid a sudden spike in traffic, as
      the spike in traffic could result in oscillation of the need for
      overload control.

   If the reacting node does not receive a an OLR in messages sent to
   the formally overloaded node then the reacting node should slowly
   increase the rate of traffic sent to the overloaded node.

   It is suggested that the reacting node decrease the amount of traffic
   given abatement treatment by 20% each second until the reduction is
   completely removed and no traffic is given abatement treatment.

      The goal of this behavior is to reduce the probability of overload
      condition thrashing where an immediate transition from 100%
      reduction to 0% reduction results in the reporting node moving
      quickly back into an overload condition.

6.  Attribute Value Pairs (Normative)

   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.

   When added to existing commands, both OC-Feature-Vector and OC-OLR
   AVPs SHOULD have the M-bit flag cleared to avoid backward
   compatibility issues.

   A new application specification can incorporate the overload control
   mechanism specified in this document by making it mandatory to
   implement for the application and referencing this specification
   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs
   reused in newly defined Diameter applications SHOULD have the M-bit
   flag set.  However, it is the responsibility of the Diameter
   application designers to define how overload control mechanisms works
   on that application.






Korhonen, et al.         Expires April 12, 2015                [Page 26]

Internet-Draft                    DOIC                      October 2014


6.1.  OC-Supported-Features AVP

   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and
   serves for two purposes.  First, it announces a node's support for
   the DOIC in general.  Second, it contains the description of the
   supported DOIC features of the sending node.  The OC-Supported-
   Features AVP MUST be included in every Diameter message a DOIC
   supporting node sends.

      OC-Supported-Features ::= < AVP Header: TBD1 >
                                [ OC-Feature-Vector ]
                              * [ AVP ]


   The OC-Feature-Vector sub-AVP is used to announce the DOIC features
   supported by the DOIC node, in the form of a flag bits field in which
   each bit announces one feature or capability supported by the node
   (see Section 6.2).  The absence of the OC-Feature-Vector AVP
   indicates that only the default traffic abatement algorithm described
   in this specification is supported.

   A reacting node includes this AVP to indicate its capabilities to a
   reporting node.  For example, the reacting node may indicate which
   (future defined) traffic abatement algorithms it supports in addition
   to the default.

   During the message exchange the DOIC nodes express their common set
   of supported capabilities.  The reacting node includes the OC-
   Supported-Features AVP that announces what it supports.  The
   reporting node that sends the answer also includes the OC-Supported-
   Features AVP that describes the capabilities it supports.  The set of
   capabilities advertised by the reporting node depends on local
   policies.  At least one of the announced capabilities MUST match.  If
   there is no single matching capability the reacting node MUST act as
   if it does not implement DOIC and cease inserting any DOIC related
   AVPs into any Diameter messages with this specific reacting node.

      Editor's note: The last sentence conflicts with the last sentence
      two paragraphs up.  In reality, there will always be at least one
      matching capability as all nodes supporting DOIC must support the
      loss algorithm.  Suggest removing the last sentence.

6.2.  OC-Feature-Vector AVP

   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and
   contains a 64 bit flags field of announced capabilities of a DOIC
   node.  The value of zero (0) is reserved.




Korhonen, et al.         Expires April 12, 2015                [Page 27]

Internet-Draft                    DOIC                      October 2014


   The following capabilities are defined in this document:

   OLR_DEFAULT_ALGO (0x0000000000000001)

      When this flag is set by the DOIC node it means that the default
      traffic abatement (loss) algorithm is supported.

6.3.  OC-OLR AVP

   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the
   necessary information to convey an overload report.  The OC-OLR AVP
   does not explicitly contain all information needed by the reacting
   node to decide whether a subsequent request must undergo a throttling
   process with the received reduction percentage.  The value of the OC-
   Report-Type AVP within the OC-OLR AVP indicates which implicit
   information is relevant for this decision (see Section 6.6).  The
   application the OC-OLR AVP applies to is the same as the Application-
   Id found in the Diameter message header.  The identity the OC-OLR AVP
   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP
   as well) found from the encapsulating Diameter command.  The OC-OLR
   AVP is intended to be sent only by a reporting node.

      OC-OLR ::= < AVP Header: TBD2 >
                 < OC-Sequence-Number >
                 < OC-Report-Type >
                 [ OC-Reduction-Percentage ]
                 [ OC-Validity-Duration ]
               * [ AVP ]


   The OC-Validity-Duration AVP indicates the validity time of the
   overload report associated with a specific sequence number, measured
   after reception of the OC-OLR AVP.  The validity time MUST NOT be
   updated after reception of subsequent OC-OLR AVPs with the same
   sequence number.  The default value for the OC-Validity-Duration AVP
   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is
   not present in the OC-OLR AVP, the default value applies.

   Note that if a Diameter command were to contain multiple OC-OLR AVPs
   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs
   with unknown values SHOULD be silently discarded and the event SHOULD
   be logged.

      Editor's note: Need to specify what happens when two reports of
      the same type are received.






Korhonen, et al.         Expires April 12, 2015                [Page 28]

Internet-Draft                    DOIC                      October 2014


6.4.  OC-Sequence-Number AVP

   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.
   Its usage in the context of overload control is described in
   Section 4.2.

   From the functionality point of view, the OC-Sequence-Number AVP MUST
   be used as a non-volatile increasing counter between two DOIC nodes.
   The sequence number is only required to be unique between two DOIC
   nodes.  Sequence numbers are treated in a uni-directional manner,
   i.e. two sequence numbers on each direction between two DOIC nodes
   are not related or correlated.

   When generating sequence numbers, the new sequence number MUST be
   greater than any sequence number in an active overload report
   previously sent by the reporting node.  This property MUST hold over
   a reboot of the reporting node.

6.5.  OC-Validity-Duration AVP

   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32
   and indicates in seconds the validity time of the overload report.
   The number of seconds is measured after reception of the first OC-OLR
   AVP with a given value of OC-Sequence-Number AVP.  The default value
   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the
   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the
   default value applies.  Validity duration with values above 86400
   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are
   treated as if the OC-Validity-Duration AVP were not present and
   result in the default value being used.

   A timeout of the overload report has specific concerns that need to
   be taken into account by the DOIC node acting on the earlier received
   overload report(s).  Section 6.7 discusses the impacts of timeout in
   the scope of the traffic abatement algorithms.

   When a reporting node has recovered from overload, it SHOULD
   invalidate any existing overload reports in a timely matter.  This
   can be achieved by sending an updated overload report (meaning the
   OLR contains a new sequence number) with the OC-Validity-Duration AVP
   value set to zero ("0").  If the overload report is about to expire
   naturally, the reporting node MAY choose to simply let it do so.

   A reacting node MUST invalidate and remove an overload report that
   expires without an explicit overload report containing an OC-
   Validity-Duration value set to zero ("0").





Korhonen, et al.         Expires April 12, 2015                [Page 29]

Internet-Draft                    DOIC                      October 2014


6.6.  OC-Report-Type AVP

   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The
   value of the AVP describes what the overload report concerns.  The
   following values are initially defined:

   0  A host report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      Either the Destination-Host AVP is present in the request and its
      value matches the value of the Origin-Host AVP of the received
      message that contained the OC-OLR AVP; or the Destination-Host is
      not present in the request but the value of peer identity
      associated with the connection used to send the request matches
      the value of the Origin-Host AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

   1  A realm report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      The Destination-Host AVP is absent in the request.

      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

      Editor's note: There is still an open issue on the definition of
      Realm reports and whether what report types should be supported.
      There is consensus that host reports should be supported.  There
      is discussion on Realm reports and Realm-Routed-Request reports.
      The above definition applies to Realm-Routed-Request reports where
      Realm reports are defined to apply to all requests that match the
      realm, independent of the presence, absence or value of the
      Destination-Host AVP.





Korhonen, et al.         Expires April 12, 2015                [Page 30]

Internet-Draft                    DOIC                      October 2014


   The default value of the OC-Report-Type AVP is 0 (i.e. the host
   report).

   The OC-Report-Type AVP is envisioned to be useful for situations
   where a reacting node needs to apply different overload treatments
   for different "types" of overload.  For example, the reacting node(s)
   might need to throttle differently requests sent to a specific server
   (identified by the Destination-Host AVP in the request) and requests
   that can be handled by any server in a realm.  The example in
   Appendix B.1 illustrates this usage.

6.7.  OC-Reduction-Percentage AVP

   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32
   and describes the percentage of the traffic that the sender is
   requested to reduce, compared to what it otherwise would send.  The
   OC-Reduction-Percentage AVP applies to the default (loss) algorithm
   specified in this specification.  However, the AVP can be reused for
   future abatement algorithms, if its semantics fit into the new
   algorithm.

   The value of the Reduction-Percentage AVP is between zero (0) and one
   hundred (100).  Values greater than 100 are ignored.  The value of
   100 means that all traffic is to be throttled, i.e. the reporting
   node is under a severe load and ceases to process any new messages.
   The value of 0 means that the reporting node is in a stable state and
   has no need for the reacting node to apply any traffic abatement.
   The default value of the OC-Reduction-Percentage AVP is 0.  When the
   OC-Reduction-Percentage AVP is not present in the overload report,
   the default value applies.

6.8.  Attribute Value Pair flag rules



















Korhonen, et al.         Expires April 12, 2015                [Page 31]

Internet-Draft                    DOIC                      October 2014


                                                         +---------+
                                                         |AVP flag |
                                                         |rules    |
                                                         +----+----+
                              AVP   Section              |    |MUST|
       Attribute Name         Code  Defined  Value Type  |MUST| NOT|
      +--------------------------------------------------+----+----+
      |OC-Supported-Features  TBD1  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-OLR                 TBD2  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Sequence-Number     TBD3  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Validity-Duration   TBD4  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Report-Type         TBD5  x.x      Enumerated  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Reduction                                      |    |    |
      |  -Percentage          TBD8  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Feature-Vector      TBD6  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+


   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP.

   The Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.  Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set.

7.  Error Response Codes

   Editor's note: This section depends on resolution of issue #27.

8.  IANA Considerations

8.1.  AVP codes

   New AVPs defined by this specification are listed in Section 6.  All
   AVP codes allocated from the 'Authentication, Authorization, and
   Accounting (AAA) Parameters' AVP Codes registry.






Korhonen, et al.         Expires April 12, 2015                [Page 32]

Internet-Draft                    DOIC                      October 2014


8.2.  New registries

   Three new registries are needed under the 'Authentication,
   Authorization, and Accounting (AAA) Parameters' registry.

   Section 6.2 defines a new "Overload Control Feature Vector" registry
   including the initial assignments.  New values can be added into the
   registry using the Specification Required policy [RFC5226].  See
   Section 6.2 for the initial assignment in the registry.

   Section 6.6 defines a new "Overload Report Type" registry with its
   initial assignments.  New types can be added using the Specification
   Required policy [RFC5226].

9.  Security Considerations

   This mechanism gives Diameter nodes the ability to request that
   downstream nodes send fewer Diameter requests.  Nodes do this by
   exchanging overload reports that directly affect this reduction.
   This exchange is potentially subject to multiple methods of attack,
   and has the potential to be used as a Denial-of-Service (DoS) attack
   vector.

   Overload reports may contain information about the topology and
   current status of a Diameter network.  This information is
   potentially sensitive.  Network operators may wish to control
   disclosure of overload reports to unauthorized parties to avoid its
   use for competitive intelligence or to target attacks.

   Diameter does not include features to provide end-to-end
   authentication, integrity protection, or confidentiality.  This may
   cause complications when sending overload reports between non-
   adjacent nodes.

9.1.  Potential Threat Modes

   The Diameter protocol involves transactions in the form of requests
   and answers exchanged between clients and servers.  These clients and
   servers may be peers, that is,they may share a direct transport (e.g.
   TCP or SCTP) connection, or the messages may traverse one or more
   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,
   DTLS, or IPSec to authenticate peers, and to provide confidentiality
   and integrity protection of traffic between peers.  Nodes can make
   authorization decisions based on the peer identities authenticated at
   the transport layer.

   When agents are involved, this presents an effectively hop-by-hop
   trust model.  That is, a Diameter client or server can authorize an



Korhonen, et al.         Expires April 12, 2015                [Page 33]

Internet-Draft                    DOIC                      October 2014


   agent for certain actions, but it must trust that agent to make
   appropriate authorization decisions about its peers, and so on.

   Since confidentiality and integrity protection occurs at the
   transport layer.  Agents can read, and perhaps modify, any part of a
   Diameter message, including an overload report.

   There are several ways an attacker might attempt to exploit the
   overload control mechanism.  An unauthorized third party might inject
   an overload report into the network.  If this third party is upstream
   of an agent, and that agent fails to apply proper authorization
   policies, downstream nodes may mistakenly trust the report.  This
   attack is at least partially mitigated by the assumption that nodes
   include overload reports in Diameter answers but not in requests.
   This requires an attacker to have knowledge of the original request
   in order to construct a response.  Therefore, implementations SHOULD
   validate that an answer containing an overload report is a properly
   constructed response to a pending request prior to acting on the
   overload report.

   A similar attack involves an otherwise authorized Diameter node that
   sends an inappropriate overload report.  For example, a server for
   the realm "example.com" might send an overload report indicating that
   a competitor's realm "example.net" is overloaded.  If other nodes act
   on the report, they may falsely believe that "example.net" is
   overloaded, effectively reducing that realm's capacity.  Therefore,
   it's critical that nodes validate that an overload report received
   from a peer actually falls within that peer's responsibility before
   acting on the report or forwarding the report to other peers.  For
   example, an overload report from an peer that applies to a realm not
   handled by that peer is suspect.

   An attacker might use the information in an overload report to assist
   in certain attacks.  For example, an attacker could use information
   about current overload conditions to time a DoS attack for maximum
   effect, or use subsequent overload reports as a feedback mechanism to
   learn the results of a previous or ongoing attack.

9.2.  Denial of Service Attacks

   Diameter overload reports can cause a node to cease sending some or
   all Diameter requests for an extended period.  This makes them a
   tempting vector for DoS tacks.  Furthermore, since Diameter is almost
   always used in support of other protocols, a DoS attack on Diameter
   is likely to impact those protocols as well.  Therefore, Diameter
   nodes MUST NOT honor or forward overload reports from unauthorized or
   otherwise untrusted sources.




Korhonen, et al.         Expires April 12, 2015                [Page 34]

Internet-Draft                    DOIC                      October 2014


9.3.  Non-Compliant Nodes

   When a Diameter node sends an overload report, it cannot assume that
   all nodes will comply.  A non-compliant node might continue to send
   requests with no reduction in load.  Requirement 28 [RFC7068]
   indicates that the overload control solution cannot assume that all
   Diameter nodes in a network are necessarily trusted, and that
   malicious nodes not be allowed to take advantage of the overload
   control mechanism to get more than their fair share of service.

   In the absence of an overload control mechanism, Diameter nodes need
   to implement strategies to protect themselves from floods of
   requests, and to make sure that a disproportionate load from one
   source does not prevent other sources from receiving service.  For
   example, a Diameter server might reject a certain percentage of
   requests from sources that exceed certain limits.  Overload control
   can be thought of as an optimization for such strategies, where
   downstream nodes never send the excess requests in the first place.
   However, the presence of an overload control mechanism does not
   remove the need for these other protection strategies.

9.4.  End-to End-Security Issues

   The lack of end-to-end security features makes it far more difficult
   to establish trust in overload reports that originate from non-
   adjacent nodes.  Any agents in the message path may insert or modify
   overload reports.  Nodes must trust that their adjacent peers perform
   proper checks on overload reports from their peers, and so on,
   creating a transitive-trust requirement extending for potentially
   long chains of nodes.  Network operators must determine if this
   transitive trust requirement is acceptable for their deployments.
   Nodes supporting Diameter overload control MUST give operators the
   ability to select which peers are trusted to deliver overload
   reports, and whether they are trusted to forward overload reports
   from non-adjacent nodes.

   The lack of end-to-end confidentiality protection means that any
   Diameter agent in the path of an overload report can view the
   contents of that report.  In addition to the requirement to select
   which peers are trusted to send overload reports, operators MUST be
   able to select which peers are authorized to receive reports.  A node
   MUST not send an overload report to a peer not authorized to receive
   it.  Furthermore, an agent MUST remove any overload reports that
   might have been inserted by other nodes before forwarding a Diameter
   message to a peer that is not authorized to receive overload reports.

   At the time of this writing, the DIME working group is studying
   requirements for adding end-to-end security



Korhonen, et al.         Expires April 12, 2015                [Page 35]

Internet-Draft                    DOIC                      October 2014


   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,
   when they become available, might make it easier to establish trust
   in non-adjacent nodes for overload control purposes.  Readers should
   be reminded, however, that the overload control mechanism encourages
   Diameter agents to modify AVPs in, or insert additional AVPs into,
   existing messages that are originated by other nodes.  If end-to-end
   security is enabled, there is a risk that such modification could
   violate integrity protection.  The details of using any future
   Diameter end-to-end security mechanism with overload control will
   require careful consideration, and are beyond the scope of this
   document.

10.  Contributors

   The following people contributed substantial ideas, feedback, and
   discussion to this document:

   o  Eric McMurry

   o  Hannes Tschofenig

   o  Ulrich Wiehe

   o  Jean-Jacques Trottin

   o  Maria Cruz Bartolome

   o  Martin Dolly

   o  Nirav Salot

   o  Susan Shishufeng

11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network
              Time Protocol Version 4: Protocol and Algorithms
              Specification", RFC 5905, June 2010.




Korhonen, et al.         Expires April 12, 2015                [Page 36]

Internet-Draft                    DOIC                      October 2014


   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
              "Diameter Base Protocol", RFC 6733, October 2012.

11.2.  Informative References

   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.

   [I-D.ietf-dime-e2e-sec-req]
              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,
              "Diameter AVP Level Security: Scenarios and Requirements",
              draft-ietf-dime-e2e-sec-req-00 (work in progress),
              September 2013.

   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.

   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.
              Loughney, "Diameter Credit-Control Application", RFC 4006,
              August 2005.

   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,
              "Clarifications on the Routing of Diameter Requests Based
              on the Username and the Realm", RFC 5729, December 2009.

   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control
              Requirements", RFC 7068, November 2013.

   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.

Appendix A.  Issues left for future specifications

   The base solution for the overload control does not cover all
   possible use cases.  A number of solution aspects were intentionally
   left for future specification and protocol work.

A.1.  Additional traffic abatement algorithms

   This specification describes only means for a simple loss based
   algorithm.  Future algorithms can be added using the designed
   solution extension mechanism.  The new algorithms need to be
   registered with IANA.  See Sections 6.1 and 8 for the required IANA
   steps.

A.2.  Agent Overload

   This specification focuses on Diameter endpoint (server or client)
   overload.  A separate extension will be required to outline the
   handling the case of agent overload.




Korhonen, et al.         Expires April 12, 2015                [Page 37]

Internet-Draft                    DOIC                      October 2014


A.3.  DIAMETER_TOO_BUSY clarifications

   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is
   somewhat under specified.  For example, there is no information how
   long the specific Diameter node is willing to be unavailable.  A
   specification updating [RFC6733] should clarify the handling of
   DIAMETER_TOO_BUSY from the error answer initiating Diameter node
   point of view and from the original request initiating Diameter node
   point of view.  Further, the inclusion of possible additional
   information providing AVPs should be discussed and possible be
   recommended to be used.

Appendix B.  Examples

B.1.  Mix of Destination-Realm routed requests and Destination-Host
      routed requests

   Diameter allows a client to optionally select the destination server
   of a request, even if there are agents between the client and the
   server.  The client does this using the Destination-Host AVP.  In
   cases where the client does not care if a specific server receives
   the request, it can omit Destination-Host and route the request using
   the Destination-Realm and Application Id, effectively letting an
   agent select the server.

   Clients commonly send mixtures of Destination-Host and Destination-
   Realm routed requests.  For example, in an application that uses user
   sessions, a client typically won't care which server handles a
   session-initiating requests.  But once the session is initiated, the
   client will send all subsequent requests in that session to the same
   server.  Therefore it would send the initial request with no
   Destination-Host AVP.  If it receives a successful answer, the client
   would copy the Origin-Host value from the answer message into a
   Destination-Host AVP in each subsequent request in the session.

   An agent has very limited options in applying overload abatement to
   requests that contain Destination-Host AVPs.  It typically cannot
   route the request to a different server than the one identified in
   Destination-Host.  It's only remaining options are to throttle such
   requests locally, or to send an overload report back towards the
   client so the client can throttle the requests.  The second choice is
   usually more efficient, since it prevents any throttled requests from
   being sent in the first place, and removes the agent's need to send
   errors back to the client for each dropped request.

   On the other hand, an agent has much more leeway to apply overload
   abatement for requests that do not contain Destination-Host AVPs.  If
   the agent has multiple servers in its peer table for the given realm



Korhonen, et al.         Expires April 12, 2015                [Page 38]

Internet-Draft                    DOIC                      October 2014


   and application, it can route such requests to other, less overloaded
   servers.

   If the overload severity increases, the agent may reach a point where
   there is not sufficient capacity across all servers to handle even
   realm-routed requests.  In this case, the realm itself can be
   considered overloaded.  The agent may need the client to throttle
   realm-routed requests in addition to Destination-Host routed
   requests.  The overload severity may be different for each server,
   and the severity for the realm at is likely to be different than for
   any specific server.  Therefore, an agent may need to forward, or
   originate, multiple overload reports with differing ReportType and
   Reduction-Percentage values.

   Figure 2 illustrates such a mixed-routing scenario.  In this example,
   the servers S1, S2, and S3 handle requests for the realm "realm".
   Any of the three can handle requests that are not part of a user
   session (i.e. routed by Destination-Realm).  But once a session is
   established, all requests in that session must go to the same server.

        Client     Agent      S1        S2        S3
           |         |         |         |         |
           |(1) Request (DR:realm)       |         |
           |-------->|         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |Agent selects S1   |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |(2) Request (DR:realm)       |
           |         |-------->|         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |S1 overloaded, returns OLR
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |(3) Answer (OR:realm,OH:S1,OLR:RT=DH)
           |         |<--------|         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |sees OLR,routes DR traffic to S2&S3
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) |
           |<--------|         |         |         |



Korhonen, et al.         Expires April 12, 2015                [Page 39]

Internet-Draft                    DOIC                      October 2014


           |         |         |         |         |
           |         |         |         |         |
           |Client throttles requests with DH:S1   |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |(5) Request (DR:realm)       |         |
           |-------->|         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |Agent selects S2   |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |(6) Request (DR:realm)       |
           |         |------------------>|         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |S2 is overloaded...
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |(7) Answer (OH:S2, OLR:RT=DH)|
           |         |<------------------|         |
           |         |         |         |         |
           |         |         |         |         |
           |         |Agent sees OLR, realm now overloaded
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)
           |<--------|         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |Client throttles DH:S1, DH:S2, and DR:realm
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |
           |         |         |         |         |



      Figure 2: Mix of Destination-Host and Destination-Realm Routed
                                 Requests

   1.  The client sends a request with no Destination-Host AVP (that is,
       a Destination-Realm routed request.)



Korhonen, et al.         Expires April 12, 2015                [Page 40]

Internet-Draft                    DOIC                      October 2014


   2.  The agent follows local policy to select a server from its peer
       table.  In this case, the agent selects S2 and forwards the
       request.

   3.  S1 is overloaded.  It sends a answer indicating success, but also
       includes an overload report.  Since the overload report only
       applies to S1, the ReportType is "Destination-Host".

   4.  The agent sees the overload report, and records that S1 is
       overloaded by the value in the Reduction-Percentage AVP.  It
       begins diverting the indicated percentage of realm-routed traffic
       from S1 to S2 and S3.  Since it can't divert Destination-Host
       routed traffic, it forwards the overload report to the client.
       This effectively delegates the throttling of traffic with
       Destination-Host:S1 to the client.

   5.  The client sends another Destination-Realm routed request.

   6.  The agent selects S2, and forwards the request.

   7.  It turns out that S2 is also overloaded, perhaps due to all that
       traffic it took over for S1.  S2 returns an successful answer
       containing an overload report.  Since this report only applies to
       S2, the ReportType is "Destination-Host".

   8.  The agent sees that S2 is also overloaded by the value in
       Reduction-Percentage.  This value is probably different than the
       value from S1's report.  The agent diverts the remaining traffic
       to S3 as best as it can, but it calculates that the remaining
       capacity across all three servers is no longer sufficient to
       handle all of the realm-routed traffic.  This means the realm
       itself is overloaded.  The realm's overload percentage is most
       likely different than that for either S1 or S2.  The agent
       forward's S2's report back to the client in the Diameter answer.
       Additionally, the agent generates a new report for the realm of
       "realm", and inserts that report into the answer.  The client
       throttles requests with Destination-Host:S1 at one rate, requests
       with Destination-Host:S2 at another rate, and requests with no
       Destination-Host AVP at yet a third rate.  (Since S3 has not
       indicated overload, the client does not throttle requests with
       Destination-Host:S3.)

Appendix C.  Restructuring of -02 version of the draft

   This section captures the initial plan for restructuring the DOIC
   specification from the -02 version to the new -03 version.

   1. Introduction (non normative)



Korhonen, et al.         Expires April 12, 2015                [Page 41]

Internet-Draft                    DOIC                      October 2014


      -- Existing Text from section 1. --
   2. Terminology and Abbreviations (non normative)
      -- Existing Text from section 2. --
   3. Solution Overview (Non normative)
      -- Existing text from section 3. --
     3.1 Overload Control Endpoints (Non normative)
         -- New text leveraging text from existing section 5.1 --
     3.2 Piggybacking Principle (Non normative)
         -- Existing text from existing section 5.2, with enhancements --
     3.3 DOIC Capability Discovery (Non normative)
         -- New text leveraging text from existing section 5.3 --
     3.4 DOIC Overload Condition Reporting (Non normative)
         -- New text --
     3.5 DOIC Extensibility (Non normative)
         -- New text leveraging text from existing Section 5.4 --
     3.5 Simplified Example Architecture (Non normative)
         -- Existing text from section 3.1.6, with enhancements --
     3.6 Considerations for Applications Integrating the DOIC Solution (Non normative)
         -- New text --
       3.6.1. Application Classification  (Non normative)
              -- Existing text from section 3.1.1 --
       3.6.2. Application Type Overload Implications  (Non normative)
              -- Existing text from section 3.1.2 --
       3.6.3. Request Transaction Classification  (Non normative)
              -- Existing text from section 3.1.3 --
       3.6.4. Request Type Overload Implications  (Non normative)
              -- Existing text from section 3.1.4 --
   4. Solution Procedures (Normative)
     4.1 Capability Announcement (Normative)
        -- Existing text from section 5.3 --
       4.1.1. Reacting Node Behavior (Normative)
            -- Existing text from section 5.3.1 --
       4.1.2. Reporting Node Behavior  (Normative)
            -- Existing text from section 5.3.2 --
       4.1.3. Agent Behavior  (Normative)
            -- Existing text from section 5.3.3 --
     4.2. Overload Report Processing (Normative)
       4.2.1. Overload Control State (Normative)
            -- Existing text from section 5.5.1 --
       4.2.2. Reacting Node Behavior  (Normative)
            -- Existing text from section 5.5.2 --
       4.2.3. Reporting Node Behavior  (Normative)
            -- Existing text from section 5.5.3 --
       4.2.4. Agent Behavior  (Normative)
            -- Existing text from section 5.5.4 --
     4.3. Protocol Extensibility (Normative)
        -- Existing text from section 5.4 --
   5. Loss Algorithm (Normative)



Korhonen, et al.         Expires April 12, 2015                [Page 42]

Internet-Draft                    DOIC                      October 2014


      -- New text pulling from information spread through the document --
     5.1. Overview (Non normative)
          -- New text pulling from information spread through the document --
     5.2. Reporting Node Behavior (Normative)
          -- New text pulling from information spread through the document --
     5.3. Reacting Node Behavior (Normative)
          -- New text pulling from information spread through the document --
   6. Attribute Value Pairs (Normative)
      -- Existing text from section 4. --
     6.1. OC-Supported-Features AVP
          -- Existing text from section 4.1 --
     6.2. OC-Feature-Vector AVP
          -- Existing text from section 4.2 --
     6.3. OC-OLR AVP
          -- Existing text from section 4.3 --
     6.4. OC-Sequence-Number AVP
          -- Existing text from section 4.4 --
     6.5. OC-Validity-Duration AVP
          -- Existing text from section 4.5 --
     6.6. OC-Report-Type AVP
          -- Existing text from section 4.6 --
     6.7. OC-Reduction-Percentage AVP
          -- Existing text from section 4.7 --
     6.8. Attribute Value Pair flag rules
          -- Existing text from section 4.8 --
   7. Error Response Codes
          -- New text based on resolution of issue --
   8. IANA Considerations
      -- Existing text from section 7. --
     8.1. AVP codes
          -- Existing text from section 7.1 --
     8.2. New registries
          -- Existing text from section 7.2 --
   9. Security Considerations
       -- Existing text from section 8. --
     9.1. Potential Threat Modes
           -- Existing text from section 8.1 --
     9.2. Denial of Service Attacks
           -- Existing text from section 8.2 --
     9.3. Non-Compliant Nodes
           -- Existing text from section 8.3 --
     9.4. End-to End-Security Issues
           -- Existing text from section 8.4 --
   10. Contributors
   11. References
     11.1. Normative References
     11.2. Informative References
   Appendix A. Issues left for future specifications



Korhonen, et al.         Expires April 12, 2015                [Page 43]

Internet-Draft                    DOIC                      October 2014


     A.1. Additional traffic abatement algorithms
     A.2. Agent Overload
     A.3. DIAMETER_TOO_BUSY clarifications
     A.4. Per reacting node reports
   Appendix B. Examples
     B.1. Mix of Destination-Realm routed requests and Destination-
           Host routed requests
   Authors' Addresses


Authors' Addresses

   Jouni Korhonen (editor)
   Broadcom
   Porkkalankatu 24
   Helsinki  FIN-00180
   Finland

   Email: jouni.nospam@gmail.com


   Steve Donovan (editor)
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: srdonovan@usdonovans.com


   Ben Campbell
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: ben@nostrum.com


   Lionel Morand
   Orange Labs
   38/40 rue du General Leclerc
   Issy-Les-Moulineaux Cedex 9  92794
   France

   Phone: +33145296257
   Email: lionel.morand@orange.com




Korhonen, et al.         Expires April 12, 2015                [Page 44]

--------------060008090505020207050209--


From nobody Sat Oct 11 05:37:56 2014
Return-Path: <ietf-secretariat-reply@ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8FFC11A1B83 for <dime@ietfa.amsl.com>; Sat, 11 Oct 2014 05:37:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id w0GsdofcV54o for <dime@ietfa.amsl.com>; Sat, 11 Oct 2014 05:37:54 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 158491A1B91 for <dime@ietf.org>; Sat, 11 Oct 2014 05:37:53 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: dime@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 5.6.3.p4
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20141011123753.18837.86317.idtracker@ietfa.amsl.com>
Date: Sat, 11 Oct 2014 05:37:53 -0700
From: IETF Secretariat <ietf-secretariat-reply@ietf.org>
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/KkyFJGwBUYQeV8CaClL-EyevIM0
Subject: [Dime] Milestones changed for dime WG
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 11 Oct 2014 12:37:55 -0000

Changed milestone "Submit a document on 'Diameter Agent Overload' as a
working group item", set state to active from review, accepting new
milestone.

Changed milestone "Submit a document on 'Diameter Overload Control
Rate Abatement Algorithm' as a working group item", set state to
active from review, accepting new milestone.

Changed milestone "Submit I-D 'Diameter Agent Overload'  to the IESG
for consideration as a Proposed Standard ", set state to active from
review, accepting new milestone.

Changed milestone "Submit I-D 'Diameter Overload Control Rate
Abatement Algorithm'  to the IESG for consideration as a Proposed
Standard", set state to active from review, accepting new milestone.

URL: http://datatracker.ietf.org/wg/dime/charter/


From nobody Mon Oct 13 05:06:52 2014
Return-Path: <maria.cruz.bartolome@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5BCE01A89B9 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 05:06:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U0pkFzvAOHRi for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 05:06:47 -0700 (PDT)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2C26D1A8987 for <dime@ietf.org>; Mon, 13 Oct 2014 05:06:47 -0700 (PDT)
X-AuditID: c1b4fb30-f79e66d000000ff1-5b-543bc0543966
Received: from ESESSHC006.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 48.44.04081.450CB345; Mon, 13 Oct 2014 14:06:45 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.19]) by ESESSHC006.ericsson.se ([153.88.183.36]) with mapi id 14.03.0174.001; Mon, 13 Oct 2014 14:06:44 +0200
From: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>
To: Steve Donovan <srdonovan@usdonovans.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] Prep for next weeks DIME interim meeting
Thread-Index: AQHP49iFm0T5ElHF2Ue0Cem2nzWE7pwt9CbA
Date: Mon, 13 Oct 2014 12:06:43 +0000
Message-ID: <087A34937E64E74E848732CFF8354B920984104C@ESESSMB101.ericsson.se>
References: <5436A942.1010400@usdonovans.com>
In-Reply-To: <5436A942.1010400@usdonovans.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.149]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsUyM+JvjW7oAesQg5PzWS3m9q5gs9jQxOPA 5LFkyU8mj1Vv+1gDmKK4bFJSczLLUov07RK4MhY2/GMruM9Wca6nnamBcSdrFyMnh4SAicTJ +d0sELaYxIV769lAbCGBo4wSm1dLdDFyAdmLGSX296xmBkmwCdhJXDr9ggnEFhHwlTjeeRqs WVjARmLR7OtQcVuJZd/a2CFsI4ldq7cBLePgYBFQlZi1jAckzAvUOmnNe3aIXboSe+Z3gO3l FNCT6Hk3G2wkI9A930+tARvJLCAucevJfCaIOwUkluw5zwxhi0q8fPwP6hclibWHt7NA1OtI LNj9iQ3C1pZYtvA1M8ReQYmTM5+wTGAUnYVk7CwkLbOQtMxC0rKAkWUVo2hxanFSbrqRkV5q UWZycXF+nl5easkmRmCMHNzy22AH48vnjocYBTgYlXh4H/y0ChFiTSwrrsw9xCjNwaIkzrvw 3LxgIYH0xJLU7NTUgtSi+KLSnNTiQ4xMHJxSDYzxiswPe+pe11ZyWMxO2vRDxo31yeFDouLS V/Rjve//21d346pYl9DDnJYU7kSFv6cnLdLM+Mpy4xn3QV/bdYsW/IsqMnvEvGXPnHJ+bT0R 2e9P1M1KOQv32vS5f837YpGgvfyLT/qT06u3uboset5ydpcy/x1N7f1zGfxyl315yLUlO8Bh mpgSS3FGoqEWc1FxIgA3q/xjcgIAAA==
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/pqitNF_rDdcdW9ic8j_Z0EcELaA
Subject: Re: [Dime] Prep for next weeks DIME interim meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 12:06:49 -0000

Hello Steve,

I would like to know if you have already considered all the comments I made=
 to version .03, and if not, what has been your proposal. If not considered=
, I would need to go on then using version .03
A part from that, it would be very helpful if you could provide track chang=
es on the doc or the diff file.
Best regards
/MCruz

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of Steve Donovan
Sent: jueves, 09 de octubre de 2014 17:27
To: dime@ietf.org
Subject: [Dime] Prep for next weeks DIME interim meeting

All,

As we prepare for next weeks interim meeting, please remember to use the fo=
llowing as the source document:

https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-di=
me-ovli-04.txt

I've attached a copy for everyone's convenience.

Regards,

Steve


From nobody Mon Oct 13 09:21:31 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7AAD11A1ACF for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 09:21:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.58
X-Spam-Level: *
X-Spam-Status: No, score=1.58 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hVzi3r9rvVK6 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 09:21:19 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0E4AB1A030B for <dime@ietf.org>; Mon, 13 Oct 2014 09:21:19 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:61116 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XdiN0-00035p-8D for dime@ietf.org; Mon, 13 Oct 2014 09:21:15 -0700
Message-ID: <543BFBF9.3060308@usdonovans.com>
Date: Mon, 13 Oct 2014 11:21:13 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/alternative; boundary="------------070109000605050408040401"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/GCCUsC951MOXzOodeI7il1mNBn4
Subject: [Dime] DOIC Review of issues
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 16:21:21 -0000

This is a multi-part message in MIME format.
--------------070109000605050408040401
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

All,

The following is the list of open issues as of Monday, October 13. I've 
included my proposal for what needs to be done to close each issue.

Regards,

Steve

-----

#23     DOIC behavior for realm overload

Consensus reached that realm overload reports apply to requests that are 
not routed based on server selection.

Need to finalize wording on the definition on host report then update 
the definition of route report indicating it is all requests that are 
not covered by the host report.

Also need to review and update the loss report section to make sure that 
the behavior definition for both host and realm reports is complete and 
accurate.

#25     Section 3.1.5 Diameter Agent Behavior

Need definition of new error response.  Need to determine if this is 
defined in DOIC or as an extension to RFC6733.  Proposal is the later.

This issue depends on #23, as #23 will result in the definition of 
behavior of reacting nodes for host and realm reports.  The definitions 
hopefully will not be different for agents and Diameter endpoints.

Need to make sure that use cases outlined in the agent scenario draft 
are addressed.

#27     Behavior of agent acting on behalf of Client that does not 
support DOIC

Depends on the resolution to the new error code issue.  Probably need to 
define behavior for when the client support the new error code and for 
when it does not.

#43     Overstated guidance on session-ending requests.

Minor issue - requires proposed wording to close.

#57     Handling of "Realm-Routed" Overload report type

This is a dup of #23 and should be closed as such.

#58     Multiple Reporting Nodes for realm-routed-request type reports

Two proposals have been made:

1) Reporting nodes for realm reports must be kept in sync at all times 
with no additional behavior to handle the condition where they do get 
out of sync.

2) Reacting node only listens to the first node to report a new overload 
condition.  This addresses case where reporting nodes get out of sync.

Need to determine which approach to take.

#60     Agent Overload Report Handling considerations

This is a dup of #25.

#61     Agent Capability Announcement Considerations

This is a dup of #25.

#66     Non-Supporting Agent Changing Origin-Host

Two primary proposals:

1) Make it an operator configuration and test issue with no additional 
DOIC behavior defined.

2) Add an AVP to the OLR indicating the node that generated the report.  
The reacting node then detects that topology hiding behavior exists in 
the path taken by the request and can act accordingly.

Need to determine approach to take.

#67     OCS for Reporting Nodes - Expiry Time

No consensus on whether or not this is an issue.  One proposal is to 
make it clear that the OCS information discussed in the draft is an 
example and that reporting nodes can store different information as long 
as the DOIC signaling sent by the reporting node conforms with the DOIC 
specification.

Requires further discussion.

#68     Loss as the common abatemen algorithm

Consensus reached to change the wording to the following:

" Since the "loss" abatement algorithm [crossref] is mandatory to implement, DOIC can always be enabled between these two endpoints."


#69     Report Type - Realm, with absent Destination-Host

Multiple proposals for wording.  This deals with the need to make sure 
that we update the definitions of host-report and realm-report.

#70     Appendix B - Example

Multiple issues have been discussed in this thread.  I think there was 
consensus to say that a agent MAY change the OLR in the case where the 
server selects the rate algorithm, the agents supports rate and loss and 
the client only supports rate.

Requires further discussion to determine what detailed changes are proposed.

#71     Active overload report even if OC-OLR is not received

Little discussion.  Apparent consensus reached on proposed wording.

#72     Reporting Node Behaviour when OC-OLR is not received

Current document says an OLR must be included in every response. There 
is no agreement that this should be changed.

#73     Clarifications On Mbit

No list discussion on proposed changes.

#74     Move section 3.7. Considerations for Applications Integrating 
the DOIC Solution to Appendix

No list discussion on proposed change.

--------------070109000605050408040401
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    All,<br>
    <br>
    The following is the list of open issues as of Monday, October 13.&nbsp;
    I've included my proposal for what needs to be done to close each
    issue.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
    -----<br>
    <br>
    #23 &nbsp;&nbsp; &nbsp;DOIC behavior for realm overload<br>
    <br>
    Consensus reached that realm overload reports apply to requests that
    are not routed based on server selection.&nbsp; <br>
    <br>
    Need to finalize wording on the definition on host report then
    update the definition of route report indicating it is all requests
    that are not covered by the host report.&nbsp; <br>
    <br>
    Also need to review and update the loss report section to make sure
    that the behavior definition for both host and realm reports is
    complete and accurate.<br>
    <br>
    #25 &nbsp;&nbsp; &nbsp;Section 3.1.5 Diameter Agent Behavior<br>
    <br>
    Need definition of new error response.&nbsp; Need to determine if this is
    defined in DOIC or as an extension to RFC6733.&nbsp; Proposal is the
    later.<br>
    <br>
    This issue depends on #23, as #23 will result in the definition of
    behavior of reacting nodes for host and realm reports.&nbsp; The
    definitions hopefully will not be different for agents and Diameter
    endpoints.<br>
    <br>
    Need to make sure that use cases outlined in the agent scenario
    draft are addressed.<br>
    <br>
    #27 &nbsp;&nbsp; &nbsp;Behavior of agent acting on behalf of Client that does not
    support DOIC<br>
    <br>
    Depends on the resolution to the new error code issue.&nbsp; Probably
    need to define behavior for when the client support the new error
    code and for when it does not.<br>
    <br>
    #43 &nbsp;&nbsp; &nbsp;Overstated guidance on session-ending requests.<br>
    <br>
    Minor issue - requires proposed wording to close.<br>
    <br>
    #57 &nbsp;&nbsp; &nbsp;Handling of "Realm-Routed" Overload report type<br>
    <br>
    This is a dup of #23 and should be closed as such.<br>
    <br>
    #58 &nbsp;&nbsp; &nbsp;Multiple Reporting Nodes for realm-routed-request type
    reports<br>
    <br>
    Two proposals have been made:<br>
    <br>
    1) Reporting nodes for realm reports must be kept in sync at all
    times with no additional behavior to handle the condition where they
    do get out of sync.<br>
    <br>
    2) Reacting node only listens to the first node to report a new
    overload condition.&nbsp; This addresses case where reporting nodes get
    out of sync.<br>
    <br>
    Need to determine which approach to take.<br>
    <br>
    #60 &nbsp;&nbsp; &nbsp;Agent Overload Report Handling considerations<br>
    <br>
    This is a dup of #25.<br>
    <br>
    #61 &nbsp;&nbsp; &nbsp;Agent Capability Announcement Considerations<br>
    <br>
    This is a dup of #25.<br>
    <br>
    #66 &nbsp;&nbsp; &nbsp;Non-Supporting Agent Changing Origin-Host<br>
    <br>
    Two primary proposals:<br>
    <br>
    1) Make it an operator configuration and test issue with no
    additional DOIC behavior defined.<br>
    <br>
    2) Add an AVP to the OLR indicating the node that generated the
    report.&nbsp; The reacting node then detects that topology hiding
    behavior exists in the path taken by the request and can act
    accordingly.<br>
    <br>
    Need to determine approach to take.<br>
    <br>
    #67 &nbsp;&nbsp; &nbsp;OCS for Reporting Nodes - Expiry Time<br>
    <br>
    No consensus on whether or not this is an issue.&nbsp; One proposal is to
    make it clear that the OCS information discussed in the draft is an
    example and that reporting nodes can store different information as
    long as the DOIC signaling sent by the reporting node conforms with
    the DOIC specification.<br>
    <br>
    Requires further discussion.<br>
    <br>
    #68 &nbsp;&nbsp; &nbsp;Loss as the common abatemen algorithm<br>
    <br>
    Consensus reached to change the wording to the following:<br>
    <pre wrap="">" Since the "loss" abatement algorithm [crossref] is mandatory to implement, DOIC can always be enabled between these two endpoints."</pre>
    <br>
    #69 &nbsp;&nbsp; &nbsp;Report Type - Realm, with absent Destination-Host<br>
    <br>
    Multiple proposals for wording.&nbsp; This deals with the need to make
    sure that we update the definitions of host-report and realm-report.<br>
    <br>
    #70 &nbsp;&nbsp; &nbsp;Appendix B - Example<br>
    <br>
    Multiple issues have been discussed in this thread.&nbsp; I think there
    was consensus to say that a agent MAY change the OLR in the case
    where the server selects the rate algorithm, the agents supports
    rate and loss and the client only supports rate.<br>
    <br>
    Requires further discussion to determine what detailed changes are
    proposed.<br>
    <br>
    #71 &nbsp;&nbsp; &nbsp;Active overload report even if OC-OLR is not received<br>
    <br>
    Little discussion.&nbsp; Apparent consensus reached on proposed wording.<br>
    <br>
    #72 &nbsp;&nbsp; &nbsp;Reporting Node Behaviour when OC-OLR is not received<br>
    <br>
    Current document says an OLR must be included in every response.&nbsp;
    There is no agreement that this should be changed.<br>
    <br>
    #73 &nbsp;&nbsp; &nbsp;Clarifications On Mbit<br>
    <br>
    No list discussion on proposed changes.<br>
    <br>
    #74 &nbsp;&nbsp; &nbsp;Move section 3.7. Considerations for Applications
    Integrating the DOIC Solution to Appendix<br>
    <br>
    No list discussion on proposed change.<br>
  </body>
</html>

--------------070109000605050408040401--


From nobody Mon Oct 13 13:46:35 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 79E8F1A004B for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:46:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bpy1rnXc8Ghx for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:46:29 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E5BE11A000A for <dime@ietf.org>; Mon, 13 Oct 2014 13:46:29 -0700 (PDT)
Received: from localhost ([::1]:57795 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmVd-0004Ju-ON; Mon, 13 Oct 2014 13:46:25 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 20:46:25 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: https://tools.ietf.org/wg/dime/trac/ticket/75
Message-ID: <066.165d20d0969f53f2e18f5a88f737e2d5@trac.tools.ietf.org>
X-Trac-Ticket-ID: 75
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Nrg1xVox8Qmxm6bM1ZZioL2P38M
Cc: dime@ietf.org
Subject: [Dime] [dime] #75 (draft-ietf-dime-ovli): Proposed changes to Terminology section
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 20:46:33 -0000

#75: Proposed changes to Terminology section

 Propose to add a few and change a few definitions in the terminology
 section.

 Proposed text (current text follows):

    Abatement

       Reaction to receipt of an overload report resulting in a reduction
       in traffic sent to the reporting node.  Abatement actions include
       diversion and throttling.

    Abatement Algorithm

       An algorithm requested by reporting nodes and used by reacting
       nodes to reduce the amount of traffic sent during an occurrence of
       overload control.

    Diversion

       Abatement of traffic sent to a reporting node by a reacting node in
 response to receipt of an overload report.  The abatement is achieved by
 diverting traffic from the reporting node to another Diameter node that is
 able to process the request.

    Throttling

       Throttling is the reduction of the number of requests sent to an
       entity.  Throttling can include a client dropping requests, or an
       agent rejecting requests with appropriate error responses.  In
 extreme cases servers can also throttle requests when requested reductions
 in traffic does not sufficiently address the overload scenario.


    Reporting Node

       A Diameter node that generates an overload report.  (This may or
       may not be the overloaded node.)

    Reacting Node

       A Diameter node that acts upon an overload report.

    Overload Control State (OCS)

       State describing an occurrence of overload control maintained by
       reporting and reacting nodes.

    Overload Report (OLR)

       A set of AVPs sent by a reporting node indicating the start or
       continuation of an occurrence of overload control.


 Current text:

    Abatement Algorithm

       An algorithm requested by reporting nodes and used by reacting
       nodes to reduce the amount of traffic sent during an occurrence of
       overload control.

    Throttling

       Throttling is the reduction of the number of requests sent to an
       entity.  Throttling can include a client dropping requests, or an
       agent rejecting requests with appropriate error responses.
       Clients and agents can also choose to redirect throttled requests
       to some other entity or entities capable of handling them.

       Editor's note: Propose to add a definition of Abatement to include
       both throttling and diversion (redirecting of messages) actions.
       Then to modify this definition to include just the rejecting of
       requests and adding a definition of diversion.

    Reporting Node

       A Diameter node that generates an overload report.  (This may or
       may not be the overloaded node.)

    Reacting Node

       A Diameter node that consumes and acts upon a report.  Note that
       "act upon" does not necessarily mean the reacting node applies an
       abatement algorithm; it might decide to delegate that downstream,
       in which case it also becomes a "reporting node".

    Overload Control State (OCS)

       State describing an occurrence of overload control maintained by
       reporting and reacting nodes.

    Overload Report (OLR)

       A set of AVPs sent by a reporting node indicating the start or
       continuation of an occurrence of overload control.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <https://tools.ietf.org/wg/dime/trac/ticket/75>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 13:50:59 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4A4D71A000A for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:50:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q5_YNzwZTh30 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:50:58 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 174441A0023 for <dime@ietf.org>; Mon, 13 Oct 2014 13:50:58 -0700 (PDT)
Received: from localhost ([::1]:58010 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmZz-00061v-Ar; Mon, 13 Oct 2014 13:50:55 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 20:50:55 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/76
Message-ID: <066.4f1da7960fc11058290d816d3513056d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 76
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/VwdmlB_6g1HZUYaoNg2A2b8bpp4
Cc: dime@ietf.org
Subject: [Dime] [dime] #76 (draft-ietf-dime-ovli): Add report type ot OCS at reporting node
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 20:50:59 -0000

#76: Add report type ot OCS at reporting node

 Propose to add report type as part of the information included in the OCS
 of a reporting node.

 The results in adding Report Type to the list of information included in
 the OCS in section 4.2.1.2.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/76>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 13:54:14 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 594AA1A006D for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:54:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oqXJVz7Seaqg for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:54:10 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9A2B1A005F for <dime@ietf.org>; Mon, 13 Oct 2014 13:54:10 -0700 (PDT)
Received: from localhost ([::1]:58090 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xdmd5-0007Yt-V1; Mon, 13 Oct 2014 13:54:07 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 20:54:07 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/77
Message-ID: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
X-Trac-Ticket-ID: 77
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/OdvynyYz8b4zPJeelUk0tsZnbdo
Cc: dime@ietf.org
Subject: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 20:54:12 -0000

#77: Section 4.2.3 - Reporting node behavior (overload report handling)

 Propose adding the following two paragraphs after the third paragraph
 (location isn't critically important):

    The reporting node MUST include the OC-Validity-Duration AVP in the
 OLR.

    The reporting node MUST include a report-type in the OLR.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/77>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 13:55:24 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A0F291A0072 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:55:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WOXrEHVcGnZi for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:55:20 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 661AC1A0055 for <dime@ietf.org>; Mon, 13 Oct 2014 13:55:20 -0700 (PDT)
Received: from localhost ([::1]:58155 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmeD-0007xY-Qa; Mon, 13 Oct 2014 13:55:17 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 20:55:17 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/78
Message-ID: <066.7563cf099a48a0e6ca19394c0b608cbd@trac.tools.ietf.org>
X-Trac-Ticket-ID: 78
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/6KniqOu6DQjyZGd-Qp-qAge-rBk
Cc: dime@ietf.org
Subject: [Dime] [dime] #78 (draft-ietf-dime-ovli): Remove section 5.2
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 20:55:21 -0000

#78: Remove section 5.2

 Propose to remove section 5.2 as it is redundant.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  minor                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/78>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 13:59:03 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2A4B71A0029 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:59:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jNhm9DN0mcXg for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 13:59:01 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 00BA31A001B for <dime@ietf.org>; Mon, 13 Oct 2014 13:59:00 -0700 (PDT)
Received: from localhost ([::1]:58309 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xdmhm-0000EJ-4q; Mon, 13 Oct 2014 13:58:58 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 20:58:58 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/79
Message-ID: <066.baf6a379d5a23d4c1fc75604089389cd@trac.tools.ietf.org>
X-Trac-Ticket-ID: 79
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/TbfdnwojyneQRun59ynyjIbq6Bo
Cc: dime@ietf.org
Subject: [Dime] [dime] #79 (draft-ietf-dime-ovli): Section 5.4 - remove editor's note
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 20:59:02 -0000

#79: Section 5.4 - remove editor's note

 Propose to remove the following editor's note from section 5.4 as the
 suggested guidance already exists.


       Editor's note: Need to add additional guidance to slowly increase
       the rate of traffic sent to avoid a sudden spike in traffic, as
       the spike in traffic could result in oscillation of the need for
       overload control.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  minor                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/79>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 14:00:28 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F23251A008C for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:00:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KAYQ_9DYGxmt for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:00:25 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D8FB21A008D for <dime@ietf.org>; Mon, 13 Oct 2014 14:00:23 -0700 (PDT)
Received: from localhost ([::1]:58371 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xdmj6-0000d5-Dm; Mon, 13 Oct 2014 14:00:20 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 21:00:20 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/80
Message-ID: <066.5539af770d4d4b42fb59894a29e8524f@trac.tools.ietf.org>
X-Trac-Ticket-ID: 80
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/7DN2opmW01Na79vgq0P5hROykLg
Cc: dime@ietf.org
Subject: [Dime] [dime] #80 (draft-ietf-dime-ovli): 6.1. OC-Supported-Features AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 21:00:27 -0000

#80: 6.1.  OC-Supported-Features AVP

 Propose removing the following from the last paragraph.  Also propose
 removing the editor's note:

 If
    there is no single matching capability the reacting node MUST act as
    if it does not implement DOIC and cease inserting any DOIC related
    AVPs into any Diameter messages with this specific reacting node.

       Editor's note: The last sentence conflicts with the last sentence
       two paragraphs up.  In reality, there will always be at least one
       matching capability as all nodes supporting DOIC must support the
       loss algorithm.  Suggest removing the last sentence.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/80>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 14:04:51 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 627D01A0024 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:04:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AOrRutwwWsn8 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:04:49 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 028B91A0029 for <dime@ietf.org>; Mon, 13 Oct 2014 14:04:49 -0700 (PDT)
Received: from localhost ([::1]:58558 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmnO-0001V5-BE; Mon, 13 Oct 2014 14:04:46 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 21:04:46 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/81
Message-ID: <066.50e52056ddaf429706618e24a3ab2a3e@trac.tools.ietf.org>
X-Trac-Ticket-ID: 81
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/wS5vZvBxNBrs-P4paW9BHvnChDA
Cc: dime@ietf.org
Subject: [Dime] [dime] #81 (draft-ietf-dime-ovli): 6.3.  OC-OLR AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 21:04:50 -0000

#81: 6.3.  OC-OLR AVP

 Propose adding the following to the third paragraph:

 Before:

    Note that if a Diameter command were to contain multiple OC-OLR AVPs
    they all MUST have different OC-Report-Type AVP value.

 After:

    Note that if a Diameter command were to contain multiple OC-OLR AVPs
    they all MUST have different OC-Report-Type AVP value.  It is
 recommended that the reacting node process the first OLR and silently
 discard other OLRs of the same type.

 Also propose removing the following editor's note:

       Editor's note: Need to specify what happens when two reports of
       the same type are received.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/81>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 14:07:06 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AA0D81A001B for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:07:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N4KzllThG7kv for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:07:00 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EFB9B1A0019 for <dime@ietf.org>; Mon, 13 Oct 2014 14:06:59 -0700 (PDT)
Received: from localhost ([::1]:58657 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmpV-0001yg-EY; Mon, 13 Oct 2014 14:06:57 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 21:06:57 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/82
Message-ID: <066.d3ed74d24b21e564d1e8254e3d1cbd6d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 82
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/BPK6f_BqInbl_RY11v8YyLRqHx4
Cc: dime@ietf.org
Subject: [Dime] [dime] #82 (draft-ietf-dime-ovli): 6.4. OC-Sequence-Number AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 21:07:01 -0000

#82: 6.4.  OC-Sequence-Number AVP

 Propose modifying the second paragraph:

 Before:

    From the functionality point of view, the OC-Sequence-Number AVP MUST
    be used as a non-volatile increasing counter between two DOIC nodes.


 After:

    From the functionality point of view, the OC-Sequence-Number AVP MUST
    be used as a non-volatile increasing counter for an individual overload
 report between two DOIC nodes.


 Also propose adding the following paragraph at the end of the section:

 The sequence number is not required to be greater between discrete
 overload reports.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/82>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 14:08:06 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 711041A001B for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:08:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c4ldCdSsy6eV for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:07:59 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C43C41A0024 for <dime@ietf.org>; Mon, 13 Oct 2014 14:07:59 -0700 (PDT)
Received: from localhost ([::1]:58678 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XdmqU-000248-GX; Mon, 13 Oct 2014 14:07:58 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 21:07:58 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/83
Message-ID: <066.97e9aa79dd56fc024effa9ff255e2f28@trac.tools.ietf.org>
X-Trac-Ticket-ID: 83
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/XuDmEf7RcI3WvZPRhr9pPS4Js2M
Cc: dime@ietf.org
Subject: [Dime] [dime] #83 (draft-docdt-dime-ovli): 6.6. OC-Report-Type AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 21:08:04 -0000

#83: 6.6.  OC-Report-Type AVP

 Propose removing the editor's note.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-docdt-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-docdt-dime-ovli    |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/83>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 14:10:26 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 82EB01A0029 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:10:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7iFKDl3B8i2u for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 14:10:17 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 801D61A0024 for <dime@ietf.org>; Mon, 13 Oct 2014 14:10:17 -0700 (PDT)
Received: from localhost ([::1]:58760 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xdmsg-0002TT-L0; Mon, 13 Oct 2014 14:10:14 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 13 Oct 2014 21:10:14 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/84
Message-ID: <066.28524b7f3851b1ca821a52ca53aabef6@trac.tools.ietf.org>
X-Trac-Ticket-ID: 84
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/2v8JAVGho-xHmZCg1ShJsCeMzxk
Cc: dime@ietf.org
Subject: [Dime] [dime] #84 (draft-ietf-dime-ovli): 6.6. OC-Report-Type AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 21:10:21 -0000

#84: 6.6.  OC-Report-Type AVP

 Propose removing the following paragraph:

    The default value of the OC-Report-Type AVP is 0 (i.e. the host
    report).

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/84>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 13 16:04:25 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B80D41A1A3A for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 16:04:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.354
X-Spam-Level: 
X-Spam-Status: No, score=-2.354 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, IP_NOT_FRIENDLY=0.334, RP_MATCHES_RCVD=-0.786, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id G1z0r29E6Yds for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 16:04:21 -0700 (PDT)
Received: from nostrum.com (raven.nostrum.com [69.55.229.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7F3D51A1A34 for <dime@ietf.org>; Mon, 13 Oct 2014 16:04:21 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9DN4J3O044635 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 13 Oct 2014 18:04:20 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <066.50e52056ddaf429706618e24a3ab2a3e@trac.tools.ietf.org>
Date: Mon, 13 Oct 2014 18:04:18 -0500
X-Mao-Original-Outgoing-Id: 434934258.906684-aa4c1ece026dcf9f6bcb9ea320e75738
Content-Transfer-Encoding: quoted-printable
Message-Id: <657165D5-B716-4E30-98AB-92BDCD347EC7@nostrum.com>
References: <066.50e52056ddaf429706618e24a3ab2a3e@trac.tools.ietf.org>
To: dime@ietf.org
X-Mailer: Apple Mail (2.1878.6)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/ARFeZpd7nK0ylDsFyiL0_hYxvNg
Subject: Re: [Dime] [dime] #81 (draft-ietf-dime-ovli): 6.3.  OC-OLR AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 23:04:24 -0000

On reflection, I don't agree on this one. I don't think we need to =
specify how a recipient handles a violation of a MUST level requirement. =
(Why would that be different for this and any other MUST?)

Is there a way you could get multiple reports of the same type in a =
message without something violating the MUST?

On Oct 13, 2014, at 4:04 PM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:

> #81: 6.3.  OC-OLR AVP
>=20
> Propose adding the following to the third paragraph:
>=20
> Before:
>=20
>    Note that if a Diameter command were to contain multiple OC-OLR =
AVPs
>    they all MUST have different OC-Report-Type AVP value.
>=20
> After:
>=20
>    Note that if a Diameter command were to contain multiple OC-OLR =
AVPs
>    they all MUST have different OC-Report-Type AVP value.  It is
> recommended that the reacting node process the first OLR and silently
> discard other OLRs of the same type.
>=20
> Also propose removing the following editor's note:
>=20
>       Editor's note: Need to specify what happens when two reports of
>       the same type are received.
>=20
> --=20
> =
-------------------------------------+------------------------------------=
-
> Reporter:                           |      Owner:  draft-ietf-dime-
>  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
>     Type:  defect                   |     Status:  new
> Priority:  major                    |  Milestone:
> Component:  draft-ietf-dime-ovli     |    Version:
> Severity:  Active WG Document       |   Keywords:
> =
-------------------------------------+------------------------------------=
-
>=20
> Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/81>
> dime <http://tools.ietf.org/wg/dime/>
>=20


From nobody Mon Oct 13 16:15:41 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B3DEE1A1A59 for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 16:15:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.354
X-Spam-Level: 
X-Spam-Status: No, score=-2.354 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, IP_NOT_FRIENDLY=0.334, RP_MATCHES_RCVD=-0.786, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6vcK1pHOysVr for <dime@ietfa.amsl.com>; Mon, 13 Oct 2014 16:15:15 -0700 (PDT)
Received: from nostrum.com (raven.nostrum.com [69.55.229.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2CC661A1A45 for <dime@ietf.org>; Mon, 13 Oct 2014 16:15:14 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9DNFC1p045604 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 13 Oct 2014 18:15:13 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
Date: Mon, 13 Oct 2014 18:15:11 -0500
X-Mao-Original-Outgoing-Id: 434934911.633419-b811d5ecd14b9525719224cbc4f02f5c
Content-Transfer-Encoding: quoted-printable
Message-Id: <E76694D4-6CEC-4508-A2BB-DD754F432C22@nostrum.com>
References: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
To: dime@ietf.org
X-Mailer: Apple Mail (2.1878.6)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/SRlLhFJDaixIOzqyVJmD-0DSpLM
Subject: Re: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Oct 2014 23:15:18 -0000

Are these not mandatory in the in the AVP definition? If they aren't =
they should be, and if they are, the text is redundant.

On Oct 13, 2014, at 3:54 PM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:

> #77: Section 4.2.3 - Reporting node behavior (overload report =
handling)
>=20
> Propose adding the following two paragraphs after the third paragraph
> (location isn't critically important):
>=20
>    The reporting node MUST include the OC-Validity-Duration AVP in the
> OLR.
>=20
>    The reporting node MUST include a report-type in the OLR.
>=20
> --=20
> =
-------------------------------------+------------------------------------=
-
> Reporter:                           |      Owner:  draft-ietf-dime-
>  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
>     Type:  defect                   |     Status:  new
> Priority:  major                    |  Milestone:
> Component:  draft-ietf-dime-ovli     |    Version:
> Severity:  Active WG Document       |   Keywords:
> =
-------------------------------------+------------------------------------=
-
>=20
> Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/77>
> dime <http://tools.ietf.org/wg/dime/>
>=20


From nobody Tue Oct 14 09:07:44 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1EA4C1A8996 for <dime@ietfa.amsl.com>; Tue, 14 Oct 2014 09:07:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.686
X-Spam-Level: 
X-Spam-Status: No, score=-2.686 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jWXB-9tESBsZ for <dime@ietfa.amsl.com>; Tue, 14 Oct 2014 09:07:40 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AF2B11A88F2 for <dime@ietf.org>; Tue, 14 Oct 2014 09:07:40 -0700 (PDT)
Received: from localhost ([::1]:34222 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xe4dK-0000Qx-N9; Tue, 14 Oct 2014 09:07:34 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Tue, 14 Oct 2014 16:07:34 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/85
Message-ID: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-Trac-Ticket-ID: 85
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/rPE8SWIhsDOWI3eBqq78pNrcZo0
Cc: dime@ietf.org
Subject: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Oct 2014 16:07:42 -0000

#85: New error response

 This issue is implied by others but is being added to make sure that the
 need for a new error response code (or modification of an existing error
 response code) to address requests that are rejected due to overload
 abatement.  The required behavior in response to the new code is to not
 retry the transaction.

 This response code will likely be defined in a separate document and
 referred to by the DOIC specification.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/85>
dime <http://tools.ietf.org/wg/dime/>


From nobody Wed Oct 15 03:29:18 2014
Return-Path: <birgit.falter@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CB36B1A1A97 for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 03:29:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level: 
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XECeGrM1GBbw for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 03:29:15 -0700 (PDT)
Received: from sesbmg23.ericsson.net (sesbmg23.ericsson.net [193.180.251.37]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CD6B21A000B for <dime@ietf.org>; Wed, 15 Oct 2014 03:29:14 -0700 (PDT)
X-AuditID: c1b4fb25-f791c6d00000617b-27-543e4c78437f
Received: from ESESSHC003.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id D0.72.24955.87C4E345; Wed, 15 Oct 2014 12:29:13 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.19]) by ESESSHC003.ericsson.se ([153.88.183.27]) with mapi id 14.03.0174.001; Wed, 15 Oct 2014 12:29:12 +0200
From: Birgit Falter <birgit.falter@ericsson.com>
To: "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] [dime] #83 (draft-docdt-dime-ovli): 6.6. OC-Report-Type AVP
Thread-Index: AQHP5ynNUSQiLX1rOU22FXqxT/IbgJww91dA
Date: Wed, 15 Oct 2014 10:29:12 +0000
Message-ID: <E8E916316CD53248AECB69A86737C4E40988E193@ESESSMB101.ericsson.se>
References: <066.97e9aa79dd56fc024effa9ff255e2f28@trac.tools.ietf.org>
In-Reply-To: <066.97e9aa79dd56fc024effa9ff255e2f28@trac.tools.ietf.org>
Accept-Language: de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.147]
Content-Type: multipart/alternative; boundary="_000_E8E916316CD53248AECB69A86737C4E40988E193ESESSMB101erics_"
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNLMWRmVeSWpSXmKPExsUyM+JvjW6lj12IwexDnBZze1ewOTB6LFny kymAMYrLJiU1J7MstUjfLoEr48frTywFV5QrZi0/ydTAeEW+i5GTQ0LARGLfyWZmCFtM4sK9 9WxdjFwcQgJHGSXW3l7DBOEsZpQ4O6GftYuRg4NNwECi5Wc5iCkioCxx+pcDiCksEChx8lAM RDRIovdPPchEEQEjiZO7HzKC2CwCqhKNa4+xgNi8Ar4SjRN3M4HYQgJuErda34DZnALuEo2t C1hBbEYBWYkNG86DXcYsIC5x68l8JogrBSSW7DkPdbGoxMvH/8DukhBQkpi2NQ2iPF9iXsNv NohVghInZz5hmcAoMgvJpFlIymYhKYOI60gs2P2JDcLWlli28DUzjH3mwGMmZPEFjOyrGEWL U4uTctONjPVSizKTi4vz8/TyUks2MQJj5+CW36o7GC+/cTzEKMDBqMTDq3DVNkSINbGsuDL3 EKM0B4uSOO/Cc/OChQTSE0tSs1NTC1KL4otKc1KLDzEycXBKNTAGMeswCAacOqWznfc3i9zS 8kXfNq773llyUzPwj3gtj01n3ATZ8tmKjnN0ey8fcbKyWD71g6DS376MbcEq6d+OyHccPMHx 7cHhRmNL3z+smxLq1cUObr/Aa2AR4s19/pXo8hkr+g9PO6RfXmFx0Mm045lP9DLBifcaZGfw zqu8y/3DL3PVRW4lluKMREMt5qLiRAA3Xz9/fgIAAA==
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/O3KV-LxWbvv0D94IggpSK0QZvss
Subject: Re: [Dime] [dime] #83 (draft-docdt-dime-ovli): 6.6. OC-Report-Type AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Oct 2014 10:29:17 -0000

--_000_E8E916316CD53248AECB69A86737C4E40988E193ESESSMB101erics_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi Maria,

OK.
/irgit

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
Sent: Monday, October 13, 2014 11:08 PM
To: draft-docdt-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
Cc: dime@ietf.org
Subject: [Dime] [dime] #83 (draft-docdt-dime-ovli): 6.6. OC-Report-Type AVP

#83: 6.6.  OC-Report-Type AVP

 Propose removing the editor's note.

--
-------------------------------------+-------------------------------------
 Reporter:                           |      Owner:  draft-docdt-dime-
  srdonovan@usdonovans.com<mailto:srdonovan@usdonovans.com>           |  ov=
li@tools.ietf.org<mailto:ovli@tools.ietf.org>
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-docdt-dime-ovli    |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/83>
dime <http://tools.ietf.org/wg/dime/>

_______________________________________________
DiME mailing list
DiME@ietf.org<mailto:DiME@ietf.org>
https://www.ietf.org/mailman/listinfo/dime


--_000_E8E916316CD53248AECB69A86737C4E40988E193ESESSMB101erics_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left:=
 #800000 2px solid; } --></style>
</head>
<body>
<font face=3D"Calibri" size=3D"2"><span style=3D"font-size:11pt;">
<div>Hi Maria,</div>
<div>&nbsp;</div>
<div>OK.</div>
<div>/irgit</div>
<div>&nbsp;</div>
<div>-----Original Message-----<br>

From: DiME [<a href=3D"mailto:dime-bounces@ietf.org">mailto:dime-bounces@ie=
tf.org</a>] On Behalf Of dime issue tracker<br>

Sent: Monday, October 13, 2014 11:08 PM<br>

To: draft-docdt-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com<br>

Cc: dime@ietf.org<br>

Subject: [Dime] [dime] #83 (draft-docdt-dime-ovli): 6.6. OC-Report-Type AVP=
</div>
<div>&nbsp;</div>
<div>#83: 6.6.&nbsp; OC-Report-Type AVP</div>
<div>&nbsp;</div>
<div> Propose removing the editor's note.</div>
<div>&nbsp;</div>
<div>-- </div>
<div>-------------------------------------&#43;----------------------------=
---------</div>
<div> Reporter:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Owner:&nbsp; draft-do=
cdt-dime-</div>
<div>&nbsp; <a href=3D"mailto:srdonovan@usdonovans.com">srdonovan@usdonovan=
s.com</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbs=
p; <a href=3D"mailto:ovli@tools.ietf.org">ovli@tools.ietf.org</a></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; Type:&nbsp; defect&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; Status:&nbsp; new</div>
<div> Priority:&nbsp; major&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; =
Milestone:</div>
<div>Component:&nbsp; draft-docdt-dime-ovli&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;=
&nbsp; Version:</div>
<div> Severity:&nbsp; Active WG Document&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; |&nbsp;&nbsp; Keywords:</div>
<div>-------------------------------------&#43;----------------------------=
---------</div>
<div>&nbsp;</div>
<div>Ticket URL: &lt;<a href=3D"http://trac.tools.ietf.org/wg/dime/trac/tic=
ket/83">http://trac.tools.ietf.org/wg/dime/trac/ticket/83</a>&gt;</div>
<div>dime &lt;<a href=3D"http://tools.ietf.org/wg/dime/">http://tools.ietf.=
org/wg/dime/</a>&gt;</div>
<div>&nbsp;</div>
<div>_______________________________________________</div>
<div>DiME mailing list</div>
<div><a href=3D"mailto:DiME@ietf.org">DiME@ietf.org</a></div>
<div><a href=3D"https://www.ietf.org/mailman/listinfo/dime">https://www.iet=
f.org/mailman/listinfo/dime</a></div>
<div>&nbsp;</div>
</span></font>
</body>
</html>

--_000_E8E916316CD53248AECB69A86737C4E40988E193ESESSMB101erics_--


From nobody Wed Oct 15 05:33:32 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1788D1A6F13 for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 05:33:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.801
X-Spam-Level: 
X-Spam-Status: No, score=0.801 tagged_above=-999 required=5 tests=[BAYES_50=0.8, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QcznqknBwPDi for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 05:33:28 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias244.francetelecom.com [80.12.204.244]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 574B11A6F12 for <dime@ietf.org>; Wed, 15 Oct 2014 05:33:28 -0700 (PDT)
Received: from omfeda07.si.francetelecom.fr (unknown [xx.xx.xx.200]) by omfeda14.si.francetelecom.fr (ESMTP service) with ESMTP id 4962D2AC467 for <dime@ietf.org>; Wed, 15 Oct 2014 14:33:26 +0200 (CEST)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.186]) by omfeda07.si.francetelecom.fr (ESMTP service) with ESMTP id 2A4E315804E for <dime@ietf.org>; Wed, 15 Oct 2014 14:33:26 +0200 (CEST)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH01.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Wed, 15 Oct 2014 14:33:25 +0200
From: <lionel.morand@orange.com>
To: MORAND Lionel IMT/OLN <lionel.morand@orange.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: DIME WG Interim Meeting
Thread-Index: Ac/LQpFuDUgBmi8IRWaBzz3UFKCQogdMXKZw
Date: Wed, 15 Oct 2014 12:33:25 +0000
Message-ID: <22560_1413376406_543E6996_22560_2047_1_6B7134B31289DC4FAF731D844122B36E7CFEFB@PEXCVZYM13.corporate.adroot.infra.ftgroup>
References: <11294_1410166542_540D6F0E_11294_720_1_6B7134B31289DC4FAF731D844122B36E6FF6E6@PEXCVZYM13.corporate.adroot.infra.ftgroup>
In-Reply-To: <11294_1410166542_540D6F0E_11294_720_1_6B7134B31289DC4FAF731D844122B36E6FF6E6@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.197.38.6]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.9.24.114819
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/pmTi9MXspqrHQbGLhjh9QEKUCmk
Subject: Re: [Dime] DIME WG Interim Meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Oct 2014 12:33:31 -0000

Hi,

Here is the agenda for the next interim meeting:

THURSDAY, October 16, 2014
0930-1230  Morning Session I
Meeting Room: S905 ROYA

* Meeting Preliminaries
- Note Well
- Note takers
- Agenda bashing

* Status of the draft since IETF90
- Changes in v04
- Closed Issues
- Pending open issues
- New open Issues

THURSDAY, October 16, 2014
1400-1800  Afternoon Session I
Meeting Room: S905 ROYA

* Review of the proposed solutions and Discussion on new/pending open issue=
s (1/2)

FRIDAY, October 17, 2014
0930-1230  Morning Session II
Meeting Room: S905 ROYA

* Review of the proposed solutions and Discussion on new/pending open issue=
s (2/2)
* Conclusions

FRIDAY, October 17, 2014
1400-1700  Afternoon Session II
Meeting Room: S905 ROYA

* DOIC next steps and working procedure till WGLC/IETF91
* Wrap-up & Conclusion
* End of the meeting


*****************************************************
De=A0: DiME [mailto:dime-bounces@ietf.org] De la part de lionel.morand@oran=
ge.com
Envoy=E9=A0: lundi 8 septembre 2014 10:56
=C0=A0: iesg-secretary@ietf.org; dime@ietf.org
Objet=A0: [Dime] DIME WG Interim Meeting

The IETF DIME WG will hold an Interim Meeting on October 16-17,
2014. The meeting will take place at:

Orange Labs Sophia-Antipolis (close to ETSI premises)
905 Rue Albert Einstein=20
06560 VALBONNE, FRANCE
Meeting Room: S905 ROYA.

The agenda of the meeting is to work on the remaining open issues on the Di=
ameter Overload Control indication Conveyance (DOIC) draft, in order to pro=
duce a final version for IETF Last-Call before the end of the year. A detai=
led agenda will be provided later on the DIME mailing list.

If you'd like to attend, please register by sending an email to the DIME WG=
 chairs (dime-chairs@tools.ietf.org).=20

Here is a preliminary list of participants:

- Jouni Korhonen
- Lionel Morand
- Steve Donovan
- Ben Campbell
- Maria Cruz Bartolome
- Jean-Jacques Trottin
- Susan Shishufeng
- Ulrich Wiehe

Regards,

Lionel & Jouni
___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.

___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


From nobody Wed Oct 15 06:41:57 2014
Return-Path: <bclaise@cisco.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 955F51A6FB7 for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 06:41:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level: 
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9tdpbve6yjOL for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 06:41:54 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F1DCA1A1ADE for <dime@ietf.org>; Wed, 15 Oct 2014 06:41:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=318; q=dns/txt; s=iport; t=1413380512; x=1414590112; h=message-id:date:from:mime-version:to:cc:subject: content-transfer-encoding; bh=BcwU2Lx1TeBfPayLco0OhM9x93I0Pbd3Jy+Gdbt06X8=; b=W8Ob6OfgCu3tfjH5Lbh37ckt/AepzT+Fn5RLWmdMGqUbpDKvkTtg/LUc UEa4foIrmibSyPj4fHBZb5n8giWAuo3wyuWqNYNEKNZQIaBIevhnY4Ba1 W1zAh4Mw+8GILwV+4soP6z4k3ueU4hIPMNXdYz9XYwt2bNhNpv6OoCksY Q=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AqAEAMB4PlStJssW/2dsb2JhbABb2AmBKgF9hEFAATwWGAMCAQIBWAEHAQGIOsgxAQEBBwIgj2EcAQFPHYQ1AQSdVIEwg0aCcocahxiDeTuBPoE7AQEB
X-IronPort-AV: E=Sophos;i="5.04,724,1406592000"; d="scan'208";a="207590220"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-3.cisco.com with ESMTP; 15 Oct 2014 13:41:50 +0000
Received: from [10.61.194.75] ([10.61.194.75]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id s9FDfnb7024939; Wed, 15 Oct 2014 13:41:49 GMT
Message-ID: <543E799D.9050809@cisco.com>
Date: Wed, 15 Oct 2014 15:41:49 +0200
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0
MIME-Version: 1.0
To: draft-ietf-dime-e2e-sec-req@tools.ietf.org
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/CFwF3ezfn60_7dCrcoJmCsLobLk
Cc: dime mailing list <dime@ietf.org>
Subject: [Dime] Mail regarding draft-ietf-dime-e2e-sec-req
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Oct 2014 13:41:55 -0000

Dear authors,

Can you please progress draft-ietf-dime-e2e-sec-req.

Two data points:
- last update was October 21, 2013
- WG milestone: Dec 2012, Submit 'problem statement and requirements for 
Diameter end-to-end security framework' to the IESG for consideration as 
an Informational RFC

Regards, Benoit





From nobody Wed Oct 15 13:36:50 2014
Return-Path: <jouni.nospam@gmail.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 38B981ACCEE for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 13:36:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level: 
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9,  DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xNCuHaSpuQvJ for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 13:36:47 -0700 (PDT)
Received: from mail-la0-x236.google.com (mail-la0-x236.google.com [IPv6:2a00:1450:4010:c03::236]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6094B1ACD60 for <dime@ietf.org>; Wed, 15 Oct 2014 13:36:21 -0700 (PDT)
Received: by mail-la0-f54.google.com with SMTP id gm9so1780190lab.13 for <dime@ietf.org>; Wed, 15 Oct 2014 13:36:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;  h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=engA1MKC5AWOk+rdEhUudH3kgssZYIfzaJLEvBK3yOo=; b=usiILs3SSjtIdvoXrOHcCvryAEX1lhzwDnAr1/l/SaQHtmAc3Ax/Al3r5OYUZqIK6A 9B56dF7miF7ieNQ/exP8WLMwV1HmRG7QUklzMetpawpPY++Wk+VxYXohsQKgozyBayEB IAiRHe9AQijIX9XSnRKpC1cUmSxmvFUzZTTUpjNJ4we6hzoqdybzaLU7/BitmDT+b1uK K7KR0J1knGdEdvTwpSaokV1OentH2H/BMwdDQaITGiyN8YixNWiHvZHgR0dinrvyzF/p 3mqbRLlcfFqCqSOPWk/moWanrPViSbLE/wdycb8E3Qhz5Sshlr70nXwqkBqumqisTJET afSA==
X-Received: by 10.112.189.10 with SMTP id ge10mr14744415lbc.23.1413405379579;  Wed, 15 Oct 2014 13:36:19 -0700 (PDT)
Received: from [10.17.0.23] ([83.150.126.201]) by mx.google.com with ESMTPSA id lk5sm5484451lac.45.2014.10.15.13.36.17 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 15 Oct 2014 13:36:18 -0700 (PDT)
Message-ID: <543EDAC0.5070500@gmail.com>
Date: Wed, 15 Oct 2014 23:36:16 +0300
From: Jouni Korhonen <jouni.nospam@gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Steve Donovan <srdonovan@usdonovans.com>, dime@ietf.org
References: <5436A942.1010400@usdonovans.com> <5436B9C5.7080007@usdonovans.com>
In-Reply-To: <5436B9C5.7080007@usdonovans.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/oHsJ0KA3IdiMRwatzQbTFZmgg4s
Subject: Re: [Dime] Prep for next weeks DIME interim meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Oct 2014 20:36:49 -0000

Hi

I had a quick read on the document. This is just mostly for editorials.
There are still places where the same reacting and reporting node 
behavior is told again and again. This is generally error prone and 
maybe we should check how to possible avoid the repetition..

- Jouni

---------------------------------------------

** Section 1 and 3.2

o s/refered/referred

** Section 3

    namely the "loss" algorithm Section 5).  Future specifications may
                             ^^^^^^
    unknown AVPs through unmolested.  The report types described in this
                        ^^^^^^^^^^^^
o The wordind is a bit "funny". I would change to unchanged, for example.

o s/fulfill/fulfil

** Section 3.3

o s/overlaod/overload
o s/Validaty/Validity

** Section 3.4

o s/occurances/occurrences

** Section 3.6.2

o favorable? Should it be "favourable"?

** Section 4.1.2

o s/reqeust/request

** Section 4.1.3.  Agent Behavior (Normative)

    Editor's note -- Need to add this section.
     ^^^^^^^^

o Maybe just add a forward note to future specs?

** Section 4.2.1.2

o agree with the editor's note. there is no way how the reporting
   node would know when the OLR has for sure time out in reacting node.
   Recommend removing the paragraph.

** Section 4.2.1.3

o The text starts using "app-id", "Orig-host" etc here. Use correct
   wording here like "application-id", "Origin-Host" etc.

o "Reacting nodes delete an OCS when it expires (i.e. when current time
    minus reception time is greater than validity duration)."

    Reception time of what? A quick read here leads to time delta of 0.

o Agree with the editor's note. Propose using the text in the editor's
   note as-is.

o Regarding the OCS state, use the same language as in previous
   paragraphs. For example use "Algorithm" not "Alg" etc.

o Agree with the editor's note on sending update with validity
   duration 0.

** Section 4.2.3.

   these DOIC nodes See Section 4.1 for further discussion on the
                 ^^^^^

** Section 4.2.4

o Add a note that this is for future specs?

** Section 4.3

    The extention may also define new AVPs for use in DOIC Capability
          ^^^^^^
    Anouncement and for use in DOIC Overload reporting.  These new AVP
     ^^^^

    existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.
                                                      ^^^^^^^^^^^^^^^^^^
o RFC2119 language issue. Use e.g. "..SHOULD NOT be used."

** Section 5.2

o I think this section can be removed.

** Section 5.4

o I think the editor's note is not needed and enough guidance is
   already given for implementers.

       The goal of this behavior is to reduce the probability of overload
       condition thrashing where an immediate transition from 100%
       reduction to 0% reduction results in the reporting node moving
       quickly back into an overload condition.

o Use normal indentation..

** Section 6

    When added to existing commands, both OC-Feature-Vector and OC-OLR
                           ^^^^^^^^
o Or rather applications?

** Section 6.1

o Agree with the editor's note and propose removeing the sentence.

** Section 6.3.

o Regarding the editor's note I propose that the latter OC-OLR is
   disgarded and the event is logged.


10/9/2014 7:37 PM, Steve Donovan kirjoitti:
> Here's a cleaner version of the .txt document.
>
> Steve
>
> On 10/9/14, 10:26 AM, Steve Donovan wrote:
>> All,
>>
>> As we prepare for next weeks interim meeting, please remember to use
>> the following as the source document:
>>
>> https://github.com/jounikor/draft-docdt-dime-ovli/blob/master/draft-ietf-dime-ovli-04.txt
>>
>>
>> I've attached a copy for everyone's convenience.
>>
>> Regards,
>>
>> Steve
>>
>>
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>
>
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
>


From nobody Wed Oct 15 13:48:09 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 12FC91ACD3F for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 13:48:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2zgBBWjEO22y for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 13:48:01 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C04761ACD40 for <dime@ietf.org>; Wed, 15 Oct 2014 13:47:54 -0700 (PDT)
Received: from 84383542d82a.netpoint.com (187.31.0.109.rev.sfr.net [109.0.31.187]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9FKlcqx094694 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 15 Oct 2014 15:47:42 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host 187.31.0.109.rev.sfr.net [109.0.31.187] claimed to be 84383542d82a.netpoint.com
Content-Type: multipart/alternative; boundary="Apple-Mail=_0895D03F-0F00-44AE-98BA-8EA7C334FFD5"
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D90006681520B965@DEMUMBX014.nsn-intra.net>
Date: Wed, 15 Oct 2014 22:47:32 +0200
X-Mao-Original-Outgoing-Id: 435098852.701943-a6342bd6aa8a8557e57db0a9dc3ca02b
Message-Id: <28EDD2E6-0E1E-4E8D-8FE8-9E5F0F6AA05E@nostrum.com>
References: <075.41a258960641a985e7e7d8a618123b41@trac.tools.ietf.org> <5409C5A4.5090203@usdonovans.com> <E194C2E18676714DACA9C3A2516265D2026C30A4@FR712WXCHMBA12.zeu.alcatel-lucent.com> <087A34937E64E74E848732CFF8354B920983BD00@ESESSMB101.ericsson.se> <E194C2E18676714DACA9C3A2516265D2026CCAD1@FR712WXCHMBA11.zeu.alcatel-lucent.com> <087A34937E64E74E848732CFF8354B920983BF65@ESESSMB101.ericsson.se> <5BCBA1FC2B7F0B4C9D935572D90006681520B965@DEMUMBX014.nsn-intra.net>
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
X-Mailer: Apple Mail (2.1878.6)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/UohUM8p5btESrA9hObOocvDqr94
Cc: "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>, "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, with absent Destination-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Oct 2014 20:48:06 -0000

--Apple-Mail=_0895D03F-0F00-44AE-98BA-8EA7C334FFD5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=iso-8859-1

Hi Ulrich,

I think I agree with your intent, but I think the text has gotten more =
complicated than it needs to be. Here's a proposed alternative:

In 6.6:

0	A host report. The reacting node applies overload abatement to =
the set of  "host-routed" requests (see Section 3)  that would otherwise
	be served by a node with a Diameter-Identity that matches the =
Origin-Host AVP value of the Diameter answer message
	that contained the report.

1	A realm report. The reacting node applies overload abatement to =
the set of "realm-routed" requests (see Section 3), where the
	Destination-Realm AVP value from the request matches the =
Origin-Realm AVP value of the Diameter answer message that=20
	contained the 	report.

Then, replace the 2nd and 3rd to last paragraphs and the last line of =
the 4th to last paragraph of Section 3 with the following:

This document defines report types for overload of a specific server, =
and for overload of an entire realm.

A request is considered to be "host-routed" by a Diameter node if that =
node has advance knowledge that the request will be served by a =
particular destination. There are several ways a node can know this. For =
example, the request could contain a Destination-Host AVP that matches =
the destination. The sending node may perform final server selection.. =
Or the sending node could be aware of some routing policy that will =
force a request to go to the particular destination. (e.g., perhaps all =
requests for a particular user go to a specific server).

A request is considered to be "realm-routed" by a Diameter node if that =
node does not know the actual destination for the request. For example, =
the sending node may forward the request to an agent, based on the =
routing table entry for the request's application and realm. The sending =
node may have no idea where the agent might forward the request.

The distinction of whether a given request is "host-routed" or =
"realm-routed" is from the perspective of a particular node sending =
node. For example, a request may be "realm-routed" from the perspective =
of the client, but "host-routed" from the perspective of an agent that =
performs the final server selection. In general, any "realm-routed" =
request will eventually become a host-routed request as it traverses a =
Diameter network.

A report of type "host" is sent to request a reduction of offered load =
for a specific server for the application-id indicated in the =
transaction.  When receiving an OLR of type "host", a reacting node =
applies overload abatement to host routed requests that would otherwise =
go to the overloaded server.  The reacting node applies overload =
abatement to the set of "host-routed" requests that the reacting node =
knows will be served by the server that matches the Origin-Host AVP of =
the message that contained report.

A report type of "realm" is sent to indicate the overload of all servers =
in a realm for the application-id.  When receiving an OLR of type =
"realm", a reacting node applies overload abatement to the set of =
"realm-routed" requests destined for the realm indicate by the =
Origin-Realm AVP of the message that contained the report.



On Sep 26, 2014, at 12:37 PM, Wiehe, Ulrich (NSN - DE/Munich) =
<ulrich.wiehe@nsn.com> wrote:

> Mcruz, JJ,
>=20
> Maybe I missed your point, but my understanding is a bit different.=20
> Please see the attached proposal.
>=20
> Best regards
> Ulrich
>=20
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of ext Maria Cruz =
Bartolome
> Sent: Friday, September 26, 2014 11:58 AM
> To: TROTTIN, JEAN-JACQUES (JEAN-JACQUES); dime@ietf.org; =
draft-ietf-dime-ovli@tools.ietf.org
> Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - =
Realm, with absent Destination-Host
>=20
> Dear JJ, all
>=20
> I think I understand your concern.
> I modified text in clause 6.6 to clarify this point. Attached.
> Let me know your opinions.
> Best regards
> /MCruz
>=20
>=20
> -----Original Message-----
> From: TROTTIN, JEAN-JACQUES (JEAN-JACQUES) =
[mailto:jean-jacques.trottin@alcatel-lucent.com]=20
> Sent: viernes, 26 de septiembre de 2014 10:12
> To: Maria Cruz Bartolome; dime@ietf.org; =
draft-ietf-dime-ovli@tools.ietf.org
> Subject: RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - =
Realm, with absent Destination-Host
>=20
>=20
> Hi Maria Cruz
>=20
> 1) The hereafter proposed text  is in a sub part of section 6.6 =
addressing  the overload treatment when the  OC-report type indicates =
realm report so according to a Realm type OLR. The proposed  text =
mentions "...Origin-Host AVP of the received message that contained the =
OC-OLR AVP". This  OC-OLR AVP can be understood  as the Realm type OLR =
subject of this section 6.6 subpart (this was my first reading), but it =
is another report which is a host type OLR generated by this peer.=20
> As you said we have to distinguish when either a host or a realm =
report to be applied, so here the proposal is to exclude from the text =
the case where the reacting node has an active type Host type OLR of =
which the Origin Host match the peer identity, as for this case the host =
type OLR will be applied. On this basis I would propose write "Host type =
OC-OLR AVP" as hereafter.  =20
>=20
> "The Destination-Host AVP is absent in the request and the value of =
peer identity associated with the connection used to send the request =
does not match the value of the Origin-Host AVP of a received message =
that contained a Host type OC-OLR AVP"
>=20
> 2) When thinking a bit more to this case where the reacting node is =
directly connected to the reporting node (eg a Client directly connected =
to two or more servers, without intermediate DA, or a DA acting as a =
reacting node directly connected to servers). The servers usually only =
send Host type reports (I know there  is a  debate on servers sending =
realm reports), so the reacting node will not receive Realm reports.  =
For requests for which there is no destination Host, the reacting node =
will select the peer according to the host OLRs  it has or not for each =
of the peers (eg a peer that is not overload or with a small overload )  =
and then apply the abatement/throttling according to the Host type OLR =
of this peer. I think we have the same understanding.      =20
>=20
>=20
> Best regards
>=20
> JJacques=20
>=20
> -----Message d'origine-----
> De : Maria Cruz Bartolome [mailto:maria.cruz.bartolome@ericsson.com]
> Envoy=E9 : jeudi 25 septembre 2014 18:28
> =C0 : TROTTIN, JEAN-JACQUES (JEAN-JACQUES); dime@ietf.org; =
draft-ietf-dime-ovli@tools.ietf.org
> Objet : RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - =
Realm, with absent Destination-Host
>=20
> Dear JJ,
>=20
> I do not understand your point.
>=20
> Proposed clarification has the purpose to allow a reacting node to =
distinguish when either a host or a realm report shall apply.
>=20
> Some time ago we based such a distinction on the presence (meaning =
host report) or absence (meaning realm report).
> Now we have covered the case for host reports when the host is absent =
but it refers to the directly connected peer. Therefore, just absence =
does not allow the reacting node to identify it has to apply a realm =
report.
>=20
> Let me know if this clarifies, or if I may be missing your point.
> Thanks
> /MCruz
>=20
>=20
> -----Original Message-----
> From: TROTTIN, JEAN-JACQUES (JEAN-JACQUES) =
[mailto:jean-jacques.trottin@alcatel-lucent.com]
> Sent: viernes, 12 de septiembre de 2014 14:13
> To: dime@ietf.org; draft-ietf-dime-ovli@tools.ietf.org; Maria Cruz =
Bartolome
> Subject: RE: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - =
Realm, with absent Destination-Host
>=20
> Hi MCruz
>=20
> The proposed  text applies to the realm report.=20
>=20
> Realm OLRs (in particular with same seq number) may be conveyed in =
answers with different Origin-host (but with same Origin realm), so what =
means to refer "to the Origin-Host AVP of the received message that =
contained the (realm type) OC-OLR AVP". This is different  from the Host =
report, where the host type OC-OLR always refers to the origin host  of =
the answer.
>=20
> Can you  clarify and give a use case / topology case.
>=20
> Best regards
>=20
> JJacques
>=20
>=20
> -----Message d'origine-----
> De : DiME [mailto:dime-bounces@ietf.org] De la part de Steve Donovan =
Envoy=E9 : vendredi 5 septembre 2014 16:16 =C0 : dime@ietf.org; =
draft-ietf-dime-ovli@tools.ietf.org; maria.cruz.bartolome@ericsson.com =
Objet : Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - =
Realm, with absent Destination-Host
>=20
> I agree.
>=20
> On 9/5/14, 2:40 AM, dime issue tracker wrote:
>> #69: Report Type - Realm, with absent Destination-Host
>>=20
>>  In clause 6.6, host report was updated to add:
>>=20
>>  ... or the Destination-Host is
>>        not present in the request but the value of peer identity
>>        associated with the connection used to send the request =
matches
>>        the value of the Origin-Host AVP of the received message that
>>        contained the OC-OLR AVP.
>>=20
>>  but this clarification needs to be included as well for realm =
report.
>>=20
>>  Original text:
>>=20
>>     1  A realm report.  The overload treatment should apply to =
requests
>>        for which all of the following conditions are true:
>>=20
>>        The Destination-Host AVP is absent in the request.
>>=20
>>        ...
>>=20
>>  Proposed text:
>>=20
>>     1  A realm report.  The overload treatment should apply to =
requests
>>        for which all of the following conditions are true:
>>=20
>>        The Destination-Host AVP is absent in the request and the the =
value
>>  of peer identity associated with the connection used to send the =
request
>>  does not match the value of the Origin-Host AVP of the received =
message
>>  that contained the OC-OLR AVP.
>>=20
>=20
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
> <OC-Report-Type clause 6-6 =
UW.docx>_______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


--Apple-Mail=_0895D03F-0F00-44AE-98BA-8EA7C334FFD5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=iso-8859-1

<html><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space;"><div>Hi =
Ulrich,</div><div><br></div><div>I think I agree with your intent, but I =
think the text has gotten more complicated than it needs to be. Here's a =
proposed alternative:</div><div><br></div><div>In =
6.6:</div><div><br></div><blockquote style=3D"margin: 0 0 0 40px; =
border: none; padding: 0px;"><div>0<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>A host report. The reacting node =
applies overload abatement to the set of &nbsp;"host-routed" requests =
(see Section 3) &nbsp;that would otherwise</div><div><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>be served =
by a node with a Diameter-Identity that matches the Origin-Host AVP =
value of the Diameter answer message</div><div><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>that =
contained the report.</div><div><br></div><div>1<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>A realm =
report. The reacting node applies overload abatement to the set of =
"realm-routed" requests (see Section 3), where the</div><div><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>Destination-Realm AVP value from the request matches the =
Origin-Realm AVP value of the Diameter answer message =
that&nbsp;</div><div><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>contained the <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>report.</div></blockquote><div><br></div><div>Then, replace the =
2nd and 3rd to last paragraphs and the last line of the 4th to last =
paragraph of Section 3 with the =
following:</div><div><br></div><blockquote style=3D"margin: 0 0 0 40px; =
border: none; padding: 0px;"><div><div>This document defines report =
types for overload of a specific server, and for overload of an entire =
realm.</div></div><div><div><br></div></div><div><div>A request is =
considered to be "host-routed" by a Diameter node if that node has =
advance knowledge that the request will be served by a particular =
destination. There are several ways a node can know this. For example, =
the request could contain a Destination-Host AVP that matches the =
destination. The sending node may perform final server selection.. Or =
the sending node could be aware of some routing policy that will force a =
request to go to the particular destination. (e.g., perhaps all requests =
for a particular user go to a specific =
server).</div></div><div><div><br></div></div><div><div>A request is =
considered to be "realm-routed" by a Diameter node if that node does not =
know the actual destination for the request. For example, the sending =
node may forward the request to an agent, based on the routing table =
entry for the request's application and realm. The sending node may have =
no idea where the agent might forward the =
request.</div></div><div><div><br></div></div><blockquote style=3D"margin:=
 0 0 0 40px; border: none; padding: 0px;"><div><div>The distinction of =
whether a given request is "host-routed" or "realm-routed" is from the =
perspective of a particular node sending node. For example, a request =
may be "realm-routed" from the perspective of the client, but =
"host-routed" from the perspective of an agent that performs the final =
server selection. In general, any "realm-routed" request will eventually =
become a host-routed request as it traverses a Diameter =
network.</div></div></blockquote><div><div><br></div></div><div><div>A =
report of type "host" is sent to request a reduction of offered load for =
a specific server for the application-id indicated in the transaction. =
&nbsp;When receiving an OLR of type "host", a reacting node applies =
overload abatement to host routed requests that would otherwise go to =
the overloaded server. &nbsp;The reacting node applies overload =
abatement to the set of "host-routed" requests that the reacting node =
knows will be served by the server that matches the Origin-Host AVP of =
the message that contained =
report.</div></div><div><div><br></div></div><div><div>A report type of =
"realm" is sent to indicate the overload of all servers in a realm for =
the application-id. &nbsp;When receiving an OLR of type "realm", a =
reacting node applies overload abatement to the set of "realm-routed" =
requests destined for the realm indicate by the Origin-Realm AVP of the =
message that contained the =
report.</div></div></blockquote><div><br></div><div><br></div><br>On Sep =
26, 2014, at 12:37 PM, Wiehe, Ulrich (NSN - DE/Munich) &lt;<a =
href=3D"mailto:ulrich.wiehe@nsn.com">ulrich.wiehe@nsn.com</a>&gt; =
wrote:<br><br><blockquote type=3D"cite">Mcruz, JJ,<br><br>Maybe I missed =
your point, but my understanding is a bit different.&nbsp;<br>Please see =
the attached proposal.<br><br>Best =
regards<br>Ulrich<br><br>-----Original Message-----<br>From: DiME [<a =
href=3D"mailto:dime-bounces@ietf.org">mailto:dime-bounces@ietf.org</a>] =
On Behalf Of ext Maria Cruz Bartolome<br>Sent: Friday, September 26, =
2014 11:58 AM<br>To: TROTTIN, JEAN-JACQUES (JEAN-JACQUES); <a =
href=3D"mailto:dime@ietf.org">dime@ietf.org</a>; <a =
href=3D"mailto:draft-ietf-dime-ovli@tools.ietf.org">draft-ietf-dime-ovli@t=
ools.ietf.org</a><br>Subject: Re: [Dime] [dime] #69 =
(draft-ietf-dime-ovli): Report Type - Realm, with absent =
Destination-Host<br><br>Dear JJ, all<br><br>I think I understand your =
concern.<br>I modified text in clause 6.6 to clarify this point. =
Attached.<br>Let me know your opinions.<br>Best =
regards<br>/MCruz<br><br><br>-----Original Message-----<br>From: =
TROTTIN, JEAN-JACQUES (JEAN-JACQUES) [<a =
href=3D"mailto:jean-jacques.trottin@alcatel-lucent.com">mailto:jean-jacque=
s.trottin@alcatel-lucent.com</a>]&nbsp;<br>Sent: viernes, 26 de =
septiembre de 2014 10:12<br>To: Maria Cruz Bartolome; <a =
href=3D"mailto:dime@ietf.org">dime@ietf.org</a>; <a =
href=3D"mailto:draft-ietf-dime-ovli@tools.ietf.org">draft-ietf-dime-ovli@t=
ools.ietf.org</a><br>Subject: RE: [Dime] [dime] #69 =
(draft-ietf-dime-ovli): Report Type - Realm, with absent =
Destination-Host<br><br><br>Hi Maria Cruz<br><br>1) The hereafter =
proposed text &nbsp;is in a sub part of section 6.6 addressing &nbsp;the =
overload treatment when the &nbsp;OC-report type indicates realm report =
so&nbsp;according to a Realm type OLR. The proposed &nbsp;text mentions =
"...Origin-Host AVP of the received message that contained the OC-OLR =
AVP". This&nbsp;&nbsp;OC-OLR AVP can be understood &nbsp;as the Realm =
type OLR subject of this section 6.6 subpart (this was my first =
reading), but it is another report which&nbsp;is a host type OLR =
generated by this peer.&nbsp;<br>As you said we have to distinguish when =
either a host or a realm report to be applied, so here the proposal is =
to exclude from the text the case where&nbsp;the reacting node has an =
active type Host type OLR of which the Origin Host match the peer =
identity, as for this case the host type OLR will be&nbsp;applied. On =
this basis I would propose write "Host type OC-OLR AVP" as hereafter. =
&nbsp;&nbsp;<br><br>"The Destination-Host AVP is absent in the request =
and the value of peer identity associated with the connection used to =
send the request does not&nbsp;match the value of the Origin-Host AVP of =
a received message that contained a Host type OC-OLR AVP"<br><br>2) When =
thinking a bit more to this case where the reacting node is directly =
connected to the reporting node (eg a Client directly connected to two =
or&nbsp;more servers, without intermediate DA, or a DA acting as a =
reacting node directly connected to servers). The servers usually only =
send Host type&nbsp;reports (I know there &nbsp;is a &nbsp;debate on =
servers sending realm reports), so the reacting node will not receive =
Realm reports. &nbsp;For requests for which&nbsp;there is no destination =
Host, the reacting node will select the peer according to the host OLRs =
&nbsp;it has or not for each of the peers (eg a peer that is =
not&nbsp;overload or with a small overload ) &nbsp;and then apply the =
abatement/throttling according to the Host type OLR of this peer. I =
think we have the same&nbsp;understanding. &nbsp; &nbsp; =
&nbsp;&nbsp;<br><br><br>Best =
regards<br><br>JJacques&nbsp;<br><br>-----Message d'origine-----<br>De : =
Maria Cruz Bartolome [<a =
href=3D"mailto:maria.cruz.bartolome@ericsson.com">mailto:maria.cruz.bartol=
ome@ericsson.com</a>]<br>Envoy=E9 : jeudi 25 septembre 2014 18:28<br>=C0 =
: TROTTIN, JEAN-JACQUES (JEAN-JACQUES); <a =
href=3D"mailto:dime@ietf.org">dime@ietf.org</a>; <a =
href=3D"mailto:draft-ietf-dime-ovli@tools.ietf.org">draft-ietf-dime-ovli@t=
ools.ietf.org</a><br>Objet : RE: [Dime] [dime] #69 =
(draft-ietf-dime-ovli): Report Type - Realm, with absent =
Destination-Host<br><br>Dear JJ,<br><br>I do not understand your =
point.<br><br>Proposed clarification has the purpose to allow a reacting =
node to distinguish when either a host or a realm report shall =
apply.<br><br>Some time ago we based such a distinction on the presence =
(meaning host report) or absence (meaning realm report).<br>Now we have =
covered the case for host reports when the host is absent but it refers =
to the directly connected peer. Therefore, just absence does =
not&nbsp;allow the reacting node to identify it has to apply a realm =
report.<br><br>Let me know if this clarifies, or if I may be missing =
your point.<br>Thanks<br>/MCruz<br><br><br>-----Original =
Message-----<br>From: TROTTIN, JEAN-JACQUES (JEAN-JACQUES) [<a =
href=3D"mailto:jean-jacques.trottin@alcatel-lucent.com">mailto:jean-jacque=
s.trottin@alcatel-lucent.com</a>]<br>Sent: viernes, 12 de septiembre de =
2014 14:13<br>To: <a href=3D"mailto:dime@ietf.org">dime@ietf.org</a>; <a =
href=3D"mailto:draft-ietf-dime-ovli@tools.ietf.org">draft-ietf-dime-ovli@t=
ools.ietf.org</a>; Maria Cruz Bartolome<br>Subject: RE: [Dime] [dime] =
#69 (draft-ietf-dime-ovli): Report Type - Realm, with absent =
Destination-Host<br><br>Hi MCruz<br><br>The proposed &nbsp;text applies =
to the realm report.&nbsp;<br><br>Realm OLRs (in particular with same =
seq number) may be conveyed in answers with different Origin-host (but =
with same Origin realm), so what&nbsp;means to refer "to the Origin-Host =
AVP of the received message that contained the (realm type) OC-OLR AVP". =
This is different &nbsp;from the Host report,&nbsp;where the host type =
OC-OLR always refers to the origin host &nbsp;of the answer.<br><br>Can =
you &nbsp;clarify and give a use case / topology case.<br><br>Best =
regards<br><br>JJacques<br><br><br>-----Message d'origine-----<br>De : =
DiME [<a =
href=3D"mailto:dime-bounces@ietf.org">mailto:dime-bounces@ietf.org</a>] =
De la part de Steve Donovan Envoy=E9 : vendredi 5 septembre 2014 16:16 =C0=
 : <a href=3D"mailto:dime@ietf.org">dime@ietf.org</a>; =
draft-ietf-dime-<a =
href=3D"mailto:ovli@tools.ietf.org">ovli@tools.ietf.org</a>; <a =
href=3D"mailto:maria.cruz.bartolome@ericsson.com">maria.cruz.bartolome@eri=
csson.com</a> Objet : Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): =
Report Type - Realm, with absent&nbsp;Destination-Host<br><br>I =
agree.<br><br>On 9/5/14, 2:40 AM, dime issue tracker =
wrote:<br><blockquote type=3D"cite">#69: Report Type - Realm, with =
absent Destination-Host<br><br>&nbsp;In clause 6.6, host report was =
updated to add:<br><br>&nbsp;... or the Destination-Host is<br>&nbsp; =
&nbsp; &nbsp; &nbsp;not present in the request but the value of peer =
identity<br>&nbsp; &nbsp; &nbsp; &nbsp;associated with the connection =
used to send the request matches<br>&nbsp; &nbsp; &nbsp; &nbsp;the value =
of the Origin-Host AVP of the received message that<br>&nbsp; &nbsp; =
&nbsp; &nbsp;contained the OC-OLR AVP.<br><br>&nbsp;but this =
clarification needs to be included as well for realm =
report.<br><br>&nbsp;Original text:<br><br>&nbsp; &nbsp; 1 &nbsp;A realm =
report. &nbsp;The overload treatment should apply to requests<br>&nbsp; =
&nbsp; &nbsp; &nbsp;for which all of the following conditions are =
true:<br><br>&nbsp; &nbsp; &nbsp; &nbsp;The Destination-Host AVP is =
absent in the request.<br><br>&nbsp; &nbsp; &nbsp; =
&nbsp;...<br><br>&nbsp;Proposed text:<br><br>&nbsp; &nbsp; 1 &nbsp;A =
realm report. &nbsp;The overload treatment should apply to =
requests<br>&nbsp; &nbsp; &nbsp; &nbsp;for which all of the following =
conditions are true:<br><br>&nbsp; &nbsp; &nbsp; &nbsp;The =
Destination-Host AVP is absent in the request and the the =
value<br>&nbsp;of peer identity associated with the connection used to =
send the request<br>&nbsp;does not match the value of the Origin-Host =
AVP of the received message<br>&nbsp;that contained the OC-OLR =
AVP.<br><br></blockquote><br>_____________________________________________=
__<br>DiME mailing list<br><a =
href=3D"mailto:DiME@ietf.org">DiME@ietf.org</a><br>https://www.ietf.org/ma=
ilman/listinfo/dime<br><span>&lt;OC-Report-Type clause 6-6 =
UW.docx&gt;</span>_______________________________________________<br>DiME =
mailing =
list<br>DiME@ietf.org<br>https://www.ietf.org/mailman/listinfo/dime<br></b=
lockquote><br></body></html>=

--Apple-Mail=_0895D03F-0F00-44AE-98BA-8EA7C334FFD5--


From nobody Wed Oct 15 22:54:01 2014
Return-Path: <maria.cruz.bartolome@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CF9231ACECE for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 22:53:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c72JNRIPvRMg for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 22:53:58 -0700 (PDT)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CFD951A9038 for <dime@ietf.org>; Wed, 15 Oct 2014 22:53:57 -0700 (PDT)
X-AuditID: c1b4fb30-f79e66d000000ff1-ee-543f5d73eaf6
Received: from ESESSHC021.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 74.1A.04081.37D5F345; Thu, 16 Oct 2014 07:53:55 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.19]) by ESESSHC021.ericsson.se ([153.88.183.81]) with mapi id 14.03.0174.001; Thu, 16 Oct 2014 07:53:54 +0200
From: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>
To: "dime@ietf.org" <dime@ietf.org>, "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>, "srdonovan@usdonovans.com" <srdonovan@usdonovans.com>
Thread-Topic: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
Thread-Index: AQHP5yfajxBbxUJzh06xjh8+ZAmIcpwxPa5g
Date: Thu, 16 Oct 2014 05:53:54 +0000
Message-ID: <087A34937E64E74E848732CFF8354B9209842F69@ESESSMB101.ericsson.se>
References: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
In-Reply-To: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.148]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFLMWRmVeSWpSXmKPExsUyM+JvjW5xrH2IweH1ohZze1ewWSw/3sBs saGJx4HZY8mSn0weXy5/ZvNY9baPNYA5issmJTUnsyy1SN8ugSvj9/OLjAUveCp6dl9ga2Cc y9XFyMkhIWAiseldNwuELSZx4d56ti5GLg4hgaOMEne232OGcBYzSrT2P2QCqWITsJO4dPoF E0hCRGA1o8SFI4eYQRLCAtUSy+6cYAWxRQRqJBrafzFD2EYSm2fNAGtmEVCVuH3pHlgNr4Cv RNPe0+xdjBxAG9wk/n9QBzE5Bdwlvk83AalgBDro+6k1YJ3MAuISt57MZ4I4VEBiyZ7zzBC2 qMTLx/9YIWwlicYlT1gh6nUkFuz+xAZha0ssW/iaGWKroMTJmU9YJjCKzkIydhaSlllIWmYh aVnAyLKKUbQ4tTgpN93ISC+1KDO5uDg/Ty8vtWQTIzByDm75bbCD8eVzx0OMAhyMSjy8Cldt Q4RYE8uKK3MPMUpzsCiJ8y48Ny9YSCA9sSQ1OzW1ILUovqg0J7X4ECMTB6dUA6NnyMu1Pnsu xV3N5pnpk/ThI8Pe3NOTmJqE5x0yXezwTuC2zhyjhaprNEPU+ZqNMiyMlqq/PcfH5nr+y1Pb 5WxNcp5MbyTnNs1qOdR2IOeUn4Prx82iTxZNUvA9+tNWTYLFjDkt5wK7Ts2ySuna6tXWm36u CQrtZf+dmZhSf/bv1MCbX8x/1SqxFGckGmoxFxUnAgD1hdq6fQIAAA==
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/gSC8kHe24iD6ngI2ywAppMUb1uo
Subject: Re: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Oct 2014 05:54:00 -0000

Hello Steve,

See below
Thanks


-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
Sent: lunes, 13 de octubre de 2014 22:54
To: draft-ietf-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
Cc: dime@ietf.org
Subject: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reportin=
g node behavior (overload report handling)

#77: Section 4.2.3 - Reporting node behavior (overload report handling)

 Propose adding the following two paragraphs after the third paragraph  (lo=
cation isn't critically important):

    The reporting node MUST include the OC-Validity-Duration AVP in the  OL=
R.
[MCruz] There is a default value in ch. 6.5. No need to set this AVP explic=
itly.

    The reporting node MUST include a report-type in the OLR.

--=20
-------------------------------------+----------------------------------
-------------------------------------+---
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+----------------------------------
-------------------------------------+---

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/77>
dime <http://tools.ietf.org/wg/dime/>

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime


From nobody Wed Oct 15 22:54:04 2014
Return-Path: <maria.cruz.bartolome@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 942C71A9038 for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 22:54:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a-gY7bOMDtys for <dime@ietfa.amsl.com>; Wed, 15 Oct 2014 22:53:59 -0700 (PDT)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B52D91ACECB for <dime@ietf.org>; Wed, 15 Oct 2014 22:53:58 -0700 (PDT)
X-AuditID: c1b4fb30-f79e66d000000ff1-f3-543f5d74d4ea
Received: from ESESSHC002.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 15.1A.04081.47D5F345; Thu, 16 Oct 2014 07:53:56 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.19]) by ESESSHC002.ericsson.se ([153.88.183.24]) with mapi id 14.03.0174.001; Thu, 16 Oct 2014 07:53:55 +0200
From: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>
To: "dime@ietf.org" <dime@ietf.org>, "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>, "srdonovan@usdonovans.com" <srdonovan@usdonovans.com>
Thread-Topic: [Dime] [dime] #82 (draft-ietf-dime-ovli): 6.4. OC-Sequence-Number	AVP
Thread-Index: AQHP5ymn/w6VJ61jM0+TGs95UnnjkJwxPi/g
Date: Thu, 16 Oct 2014 05:53:55 +0000
Message-ID: <087A34937E64E74E848732CFF8354B9209842F71@ESESSMB101.ericsson.se>
References: <066.d3ed74d24b21e564d1e8254e3d1cbd6d@trac.tools.ietf.org>
In-Reply-To: <066.d3ed74d24b21e564d1e8254e3d1cbd6d@trac.tools.ietf.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.148]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJLMWRmVeSWpSXmKPExsUyM+JvjW5JrH2IwZ+DZhZze1ewWSw/3sBs saGJx4HZY8mSn0weXy5/ZvNY9baPNYA5issmJTUnsyy1SN8ugSvjze4rbAVz+Cu6D/9ja2Ds 5uli5OSQEDCRuL9sJSOELSZx4d56ti5GLg4hgaOMEkse9jFDOIsZJXbe6mQCqWITsJO4dPoF E0hCRGA1o8SFI4eAqjg4hAVCJLbfFgepEREIlVj8uZcZwjaS+PRjLztICYuAqsS2mwEgJq+A r8TKjjCQCiEBN4nbzQfYQWxOAXeJmb0PWUFsRqB7vp9aA7aVWUBc4taT+UwQdwpILNlznhnC FpV4+fgfK4StJNG45AkrRL2OxILdn9ggbG2JZQtfg9XzCghKnJz5hGUCo+gsJGNnIWmZhaRl FpKWBYwsqxhFi1OLk3LTjYz0Uosyk4uL8/P08lJLNjEC4+bglt8GOxhfPnc8xCjAwajEw6tw 1TZEiDWxrLgy9xCjNAeLkjjvwnPzgoUE0hNLUrNTUwtSi+KLSnNSiw8xMnFwSjUwMq+rPTh/ BdedX3rvJ2nnrVxV0WM58477ylouPh2+Ywt8P9g9YpL42bb+2Jozu7vm5VXUH9j69fvFls92 H685nolZ8GHzrty3bsarWCODpmwUyIn22f0poDv8fPH3DoV5RzZPnSArHrdlqjU32713Xpd+ fzBz33RgFof/hQslxjoyDn+S/3h2SiqxFGckGmoxFxUnAgBX+g6PfAIAAA==
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/1YwqHUlGkQV_gHW57h0k__AgbvQ
Subject: Re: [Dime] [dime] #82 (draft-ietf-dime-ovli): 6.4. OC-Sequence-Number	AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Oct 2014 05:54:00 -0000

Hello Steve,
See below please
/MCruz

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
Sent: lunes, 13 de octubre de 2014 23:07
To: draft-ietf-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
Cc: dime@ietf.org
Subject: [Dime] [dime] #82 (draft-ietf-dime-ovli): 6.4. OC-Sequence-Number =
AVP

#82: 6.4.  OC-Sequence-Number AVP

 Propose modifying the second paragraph:

 Before:

    From the functionality point of view, the OC-Sequence-Number AVP MUST
    be used as a non-volatile increasing counter between two DOIC nodes.


 After:

    From the functionality point of view, the OC-Sequence-Number AVP MUST
    be used as a non-volatile increasing counter for an individual overload=
  report between two DOIC nodes.


 Also propose adding the following paragraph at the end of the section:

 The sequence number is not required to be greater between discrete  overlo=
ad reports.
[MCruz] Not sure what do you mean by  "discrete" OLR? Either they are diffe=
rent (higher sequence numbers) or they are same (same sequence number, or?

--=20
-------------------------------------+----------------------------------
-------------------------------------+---
 Reporter:                           |      Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |     Status:  new
 Priority:  major                    |  Milestone:
Component:  draft-ietf-dime-ovli     |    Version:
 Severity:  Active WG Document       |   Keywords:
-------------------------------------+----------------------------------
-------------------------------------+---

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/82>
dime <http://tools.ietf.org/wg/dime/>

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime


From nobody Thu Oct 16 14:46:03 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 04ED91A8AC1 for <dime@ietfa.amsl.com>; Thu, 16 Oct 2014 14:45:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6IKC9vs30A-2 for <dime@ietfa.amsl.com>; Thu, 16 Oct 2014 14:45:55 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 48B411A8AC2 for <dime@ietf.org>; Thu, 16 Oct 2014 14:45:55 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:56780 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xesrj-0002rt-Ei; Thu, 16 Oct 2014 14:45:53 -0700
Message-ID: <54403C8C.2050108@usdonovans.com>
Date: Thu, 16 Oct 2014 23:45:48 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>,  "dime@ietf.org" <dime@ietf.org>, "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>
References: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org> <087A34937E64E74E848732CFF8354B9209842F69@ESESSMB101.ericsson.se>
In-Reply-To: <087A34937E64E74E848732CFF8354B9209842F69@ESESSMB101.ericsson.se>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/dAcL4e9RbWWM-Ppsxyqk7BlHjlE
Subject: Re: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Oct 2014 21:45:56 -0000

Maria Cruz,

The OC-Validity-Duration is defined in the OC-OLR syntax as being required.

As a result, we should remove the default value statement.  Ben has also 
pointed out that these two statements below are not needed because it is 
already defined in the OC-OLR syntax.

Steve

On 10/16/14, 7:53 AM, Maria Cruz Bartolome wrote:
> Hello Steve,
>
> See below
> Thanks
>
>
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
> Sent: lunes, 13 de octubre de 2014 22:54
> To: draft-ietf-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
> Cc: dime@ietf.org
> Subject: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
>
> #77: Section 4.2.3 - Reporting node behavior (overload report handling)
>
>   Propose adding the following two paragraphs after the third paragraph  (location isn't critically important):
>
>      The reporting node MUST include the OC-Validity-Duration AVP in the  OLR.
> [MCruz] There is a default value in ch. 6.5. No need to set this AVP explicitly.
>
>      The reporting node MUST include a report-type in the OLR.
>


From nobody Fri Oct 17 06:04:18 2014
Return-Path: <bclaise@cisco.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 873311ACD86 for <dime@ietfa.amsl.com>; Fri, 17 Oct 2014 06:04:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Level: 
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GdEl-GcMledL for <dime@ietfa.amsl.com>; Fri, 17 Oct 2014 06:04:03 -0700 (PDT)
Received: from bgl-iport-1.cisco.com (bgl-iport-1.cisco.com [72.163.197.25]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0818D1ACD85 for <dime@ietf.org>; Fri, 17 Oct 2014 06:04:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=51986; q=dns/txt; s=iport; t=1413551042; x=1414760642; h=message-id:date:from:mime-version:to:subject; bh=/XDCYadnBtgVpVNpzpP/faIXEsPYAKAVQgfJ/E1ozYA=; b=dxCubnomLtPVVGx1Cocb4hGx0NQKaSPF/3ca/iF50XqRlOaunvQ+egU2 yDV/LXQnCFXSYKZmrMBVtzAukUEClan8zZxMclYUhqttJG8kLf/kij25G R899V9lupJB0+oGe4ktahWQOqYBiRYw328Fssb5xNizKNj188ejv2FPE+ Q=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvAEAGQSQVRIo8UY/2dsb2JhbABbgkiBcYhhzFoBfYQ2Sz0WAQEWAwIBAgFLDQgBAReIJKcYpDMBAQEHAQEBAQEBHJUfBZ1ZgTCDRoJyjjSDeTsvgksBAQE
X-IronPort-AV: E=Sophos; i="5.04,739,1406592000"; d="scan'208,217"; a="46209579"
Received: from vla196-nat.cisco.com (HELO bgl-core-4.cisco.com) ([72.163.197.24]) by bgl-iport-1.cisco.com with ESMTP; 17 Oct 2014 13:03:59 +0000
Received: from [10.86.240.167] (che-vpn-cluster-1-167.cisco.com [10.86.240.167]) by bgl-core-4.cisco.com (8.14.5/8.14.5) with ESMTP id s9HD3neL004406 for <dime@ietf.org>; Fri, 17 Oct 2014 13:03:51 GMT
Message-ID: <5440F0D5.2000203@cisco.com>
Date: Fri, 17 Oct 2014 12:35:01 +0200
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0
MIME-Version: 1.0
To: dime mailing list <dime@ietf.org>
Content-Type: multipart/alternative; boundary="------------090304040808060403040201"
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Ei7Cn_5G4DT1toA9cE4zML00RfA
Subject: [Dime] draft-ietf-dime-ovli-04.txt: feedback
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Oct 2014 13:04:07 -0000

This is a multi-part message in MIME format.
--------------090304040808060403040201
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Dear all,

Here is some feedback on draft-ietf-dime-ovli-04.txt.
Note that some of it might overlap with what was discussed during the 
interim meeting during these 2 days.

-
Note that the overload control solution defined in this
specification does not address all the requirements listed in
[RFC7068]. A number of overload control related features are left
for the future specifications.

You have to be more specific on which requirements this document 
support, and why a subset is only supported.
Can you please open an issue tracker for this (not Internet connectivity 
right now)

- OLD:
Furthermore, the solution is designed to apply to existing
and future Diameter applications, requires no changes to the Diameter
base protocol [RFC6733] and is deployable in environments where some
Diameter nodes do not implement the Diameter overload control
solution defined in this specification.

NEW:
Furthermore, the solution, _which is _designed to apply to existing
and future Diameter applications, requires no changes to the Diameter
base protocol [RFC6733] and is deployable in environments where some
Diameter nodes do not implement the Diameter overload control
solution defined in this specification.

-
Abatement Algorithm
An algorithm requested by reporting nodes and used by reacting
nodes to reduce the amount of traffic sent during an occurrence of
overload control.

I think the reporting nodes request a mechanism, not an algorithm.
Proposal:
Abatement Algorithm
A _mechanism _requested by reporting nodes and used by reacting
nodes to reduce the amount of traffic sent during an occurrence of
overload control.

Alternate proposal:
An algorithm _initiated _by reporting nodes and used by reacting
nodes to reduce the amount of traffic sent during an occurrence of
overload control.

- Terminology:
It would be beneficial if you would tell which RFC 6733 terms you use in 
this document, and be consistent with those.
Also, be consistent throughout the draft regarding capitalized terms.
Example: RFC 6733 speaks of Diameter Client/Server. This document speaks 
sometimes client, Diameter client, Diameter Client

-
OLD:
Reacting Node
A Diameter node that consumes and acts upon a report.

NEW:
Reacting Node
A Diameter node that consumes and acts upon _an overload report._

- OLD:
Reacting nodes indicate support for DOIC by including the OC-
Supported-Features AVP all request messages originated or relayed by
the Diameter node.

NEW:
Reacting nodes indicate support for DOIC by including the OC-
Supported-Features AVP _in _all request messages originated or relayed by
the Diameter node.

- I've been confused by the "Loss Algorithm" name, which is really about 
a "percentage reduction".
If you have in the future a "rate reduction" algorithm, how will you 
call this one?

- There are multiple sections discussing the same topic, for example the 
default value for the OC-Validity-Duration.
Section 6.3

    The default value for the OC-Validity-Duration AVP value is 5 (i.e.,
    5 seconds)

Section 6.4,

    The default value for the OC-Validity-Duration AVP is 5 (i.e., 5
    seconds).


- There are multiple sections discussing the same topic, for example M-bit
covered in section 4.3 (normative)

    More specifically, the sub-AVPs inside the OC-Supported-Features and
    OC-OLR AVP MAY have the M-bit set.

covered in section 6. Attribute Value Pairs (Normative)

    When added to existing commands, both OC-Feature-Vector and OC-OLR
    AVPs SHOULD have the M-bit flag cleared to avoid backward
    compatibility issues.

covered in 6.8. Attribute Value Pair flag rules

    The Diameter overload control AVPs SHOULD always be sent with the
    M-bit cleared when used within existing Diameter applications to
    avoid backward compatibility issues.

I believe that the document will be clearer with a single normative 
section discussing one topic.
Btw, that's a generic comment at this point: the draft looks like a 
series of edits, and would be benefit from an editorial/consistency pass.

-
OC-OLR AVPs with unknown values SHOULD be silently discarded and the 
event SHOULD
be logged.

What do you mean by "OC-OLR AVPs with unknown values"?   Unknown to whom?
* Do you mean "out of range", like OC-Reduction-Percentage of 101 % (for 
Integer32)
If yes, this is covered already:

    The value of the Reduction-Percentage AVP is between zero (0) and
    one hundred (100). Values greater than 100 are ignored

* Do you mean "not assigned", like OC-report-type value of 2, which 
doesn't exist
Note: section 6.7 should point to IANA, I guess

- I believe that the IANA considerations "AVP codes" section 8.1 should 
be extended.
Take an existing RFC as an example.

Regards, Benoit

--------------090304040808060403040201
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear all,<br>
    <br>
    Here is some feedback on draft-ietf-dime-ovli-04.txt.<br>
    Note that some of it might overlap with what was discussed during
    the interim meeting during these 2 days.<br>
    <br>
    - <br>
    Note that the overload control solution defined in this<br>
    specification does not address all the requirements listed in<br>
    [RFC7068]. A number of overload control related features are left<br>
    for the future specifications.<br>
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-1">
    <meta name="ProgId" content="Word.Document">
    <meta name="Generator" content="Microsoft Word 14">
    <meta name="Originator" content="Microsoft Word 14">
    <link rel="File-List"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml">
    <!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:RelyOnVML/>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
    <link rel="themeData"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx">
    <link rel="colorSchemeMapping"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
    <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
    <style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-ansi-language:EN-US;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-ansi-language:EN-US;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin-top:0cm;
	mso-para-margin-right:0cm;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-ansi-language:EN-US;
	mso-fareast-language:EN-US;}
</style>
<![endif]-->
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-1">
    <meta name="ProgId" content="Word.Document">
    <meta name="Generator" content="Microsoft Word 14">
    <meta name="Originator" content="Microsoft Word 14">
    <link rel="File-List"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml">
    <!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:RelyOnVML/>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
    <link rel="themeData"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx">
    <link rel="colorSchemeMapping"
href="file:///C:%5CUsers%5Cbclaise%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
    <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
    <style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-536870145 1073786111 1 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-ansi-language:EN-US;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-ansi-language:EN-US;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
-</style><br>
    You have to be more specific on which requirements this document
    support, and why a subset is only supported.<br>
    Can you please open an issue tracker for this (not Internet
    connectivity right now)<br>
    <br>
    - OLD:<br>
    Furthermore, the solution is designed to apply to existing<br>
    and future Diameter applications, requires no changes to the
    Diameter<br>
    base protocol [RFC6733] and is deployable in environments where some<br>
    Diameter nodes do not implement the Diameter overload control<br>
    solution defined in this specification.<br>
    <br>
    NEW:<br>
    Furthermore, the solution, <u>which is </u>designed to apply to
    existing<br>
    and future Diameter applications, requires no changes to the
    Diameter<br>
    base protocol [RFC6733] and is deployable in environments where some<br>
    Diameter nodes do not implement the Diameter overload control<br>
    solution defined in this specification.<br>
    <br>
    -<br>
    Abatement Algorithm<br>
    An algorithm requested by reporting nodes and used by reacting<br>
    nodes to reduce the amount of traffic sent during an occurrence of<br>
    overload control.<br>
    <br>
    I think the reporting nodes request a mechanism, not an algorithm.<br>
    Proposal:<br>
    Abatement Algorithm<br>
    A <u>mechanism </u>requested by reporting nodes and used by
    reacting<br>
    nodes to reduce the amount of traffic sent during an occurrence of<br>
    overload control.<br>
    <br>
    Alternate proposal:<br>
    An algorithm <u>initiated </u>by reporting nodes and used by
    reacting<br>
    nodes to reduce the amount of traffic sent during an occurrence of<br>
    overload control.<br>
    <br>
    - Terminology: <br>
    It would be beneficial if you would tell which RFC 6733 terms you
    use in this document, and be consistent with those.<br>
    Also, be consistent throughout the draft regarding capitalized
    terms.<br>
    Example: RFC 6733 speaks of Diameter Client/Server. This document
    speaks sometimes client, Diameter client, Diameter Client<br>
    <br>
    - <br>
    OLD:<br>
    Reacting Node<br>
    A Diameter node that consumes and acts upon a report. <br>
    <br>
    NEW:<br>
    Reacting Node<br>
    A Diameter node that consumes and acts upon <u>an overload report.</u>
    <br>
    <br>
    - OLD:<br>
    Reacting nodes indicate support for DOIC by including the OC-<br>
    Supported-Features AVP all request messages originated or relayed by<br>
    the Diameter node.<br>
    <br>
    NEW:<br>
    Reacting nodes indicate support for DOIC by including the OC-<br>
    Supported-Features AVP <u>in </u>all request messages originated
    or relayed by<br>
    the Diameter node.<br>
    <br>
    - I've been confused by the "Loss Algorithm" name, which is really
    about a "percentage reduction".<br>
    If you have in the future a "rate reduction" algorithm, how will you
    call this one?<br>
    <br>
    - There are multiple sections discussing the same topic, for example
    the default value for the OC-Validity-Duration.<br>
    Section 6.3<br>
    <blockquote>The default value for the OC-Validity-Duration AVP value
      is 5 (i.e., 5 seconds)<br>
    </blockquote>
    Section 6.4, <br>
    <blockquote>The default value for the OC-Validity-Duration AVP is 5
      (i.e., 5 seconds). <br>
    </blockquote>
    <br>
    - There are multiple sections discussing the same topic, for example
    M-bit<br>
    covered in section 4.3 (normative)<br>
    <blockquote>More specifically, the sub-AVPs inside the
      OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.<br>
    </blockquote>
    covered in section 6. Attribute Value Pairs (Normative)<br>
    <blockquote>When added to existing commands, both OC-Feature-Vector
      and OC-OLR<br>
      AVPs SHOULD have the M-bit flag cleared to avoid backward<br>
      compatibility issues.<br>
    </blockquote>
    covered in 6.8. Attribute Value Pair flag rules<br>
    <blockquote>The Diameter overload control AVPs SHOULD always be sent
      with the<br>
      M-bit cleared when used within existing Diameter applications to<br>
      avoid backward compatibility issues.<br>
    </blockquote>
    I believe that the document will be clearer with a single normative
    section discussing one topic.<br>
    Btw, that's a generic comment at this point: the draft looks like a
    series of edits, and would be benefit from an editorial/consistency
    pass.<br>
    <br>
    - <br>
    OC-OLR AVPs with unknown values SHOULD be silently discarded and the
    event SHOULD<br>
    be logged.<br>
    <br>
    What do you mean by "OC-OLR AVPs with unknown values"?&nbsp;&nbsp; Unknown to
    whom?<br>
    * Do you mean "out of range", like OC-Reduction-Percentage of 101 %
    (for Integer32)<br>
    If yes, this is covered already:<br>
    <blockquote>The value of the Reduction-Percentage AVP is between
      zero (0) and one hundred (100). Values greater than 100 are
      ignored</blockquote>
    * Do you mean "not assigned", like OC-report-type value of 2, which
    doesn't exist<br>
    Note: section 6.7 should point to IANA, I guess<br>
    <br>
    - I believe that the IANA considerations "AVP codes" section 8.1
    should be extended.<br>
    Take an existing RFC as an example.<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
    Regards, Benoit<br>
  </body>
</html>

--------------090304040808060403040201--


From nobody Sun Oct 19 23:34:43 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5503B1A1BEC for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:34:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.011
X-Spam-Level: 
X-Spam-Status: No, score=-0.011 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sfHOp82Yo5iF for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:34:41 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 39E651A0378 for <dime@ietf.org>; Sun, 19 Oct 2014 23:34:41 -0700 (PDT)
Received: from localhost ([::1]:56108 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg6Y9-0003vF-4Z; Sun, 19 Oct 2014 23:34:37 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 06:34:37 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/60#comment:3
Message-ID: <081.8a4914202a082ba41dbfb5fcf78d6d96@trac.tools.ietf.org>
References: <066.25846a096050f4de0dae76f80a0a9d46@trac.tools.ietf.org>
X-Trac-Ticket-ID: 60
In-Reply-To: <066.25846a096050f4de0dae76f80a0a9d46@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/250jniaBBv9Rvwjh0ymeCDLo87g
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #60 (draft-ietf-dime-ovli): Agent Overload Report Handling considerations
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 06:34:42 -0000

#60: Agent Overload Report Handling considerations

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => duplicate


Comment:

 This is a duplicate of issue #23.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  duplicate
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/60#comment:3>
dime <http://tools.ietf.org/wg/dime/>


From nobody Sun Oct 19 23:35:32 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D0B861A0378 for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:35:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oOi3gMDPkvzW for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:35:29 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C15931A6FA0 for <dime@ietf.org>; Sun, 19 Oct 2014 23:35:29 -0700 (PDT)
Received: from localhost ([::1]:56176 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg6Yw-0004S3-8t; Sun, 19 Oct 2014 23:35:26 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 06:35:26 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/61#comment:3
Message-ID: <081.38c5168434f7e918638ab5473ef56547@trac.tools.ietf.org>
References: <066.240dbe9c6b177a4db5db4535d22df5f1@trac.tools.ietf.org>
X-Trac-Ticket-ID: 61
In-Reply-To: <066.240dbe9c6b177a4db5db4535d22df5f1@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/96T-yKOuyzvaXcPtqbz8ikmIiMk
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #61 (draft-ietf-dime-ovli): Agent Capability Announcement Considerations
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 06:35:31 -0000

#61: Agent Capability Announcement Considerations

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => duplicate


Comment:

 This is a duplicate of issue #23.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  duplicate
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/61#comment:3>
dime <http://tools.ietf.org/wg/dime/>


From nobody Sun Oct 19 23:38:15 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F0B6A1A6FD4 for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:38:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X0ZYMsH3HsBp for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:38:07 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A18081A6FCA for <dime@ietf.org>; Sun, 19 Oct 2014 23:38:07 -0700 (PDT)
Received: from localhost ([::1]:56301 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg6bU-00060T-UT; Sun, 19 Oct 2014 23:38:04 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 06:38:04 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:1
Message-ID: <081.59481ca83ddcf9ab4a68dda3859e21ec@trac.tools.ietf.org>
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-Trac-Ticket-ID: 85
In-Reply-To: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/h8HyI6YAdM5SDDWswbk-bOuQJuQ
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 06:38:13 -0000

#85: New error response


Comment (by srdonovan@usdonovans.com):

 Raw notes taken from discussion at interim meeting:

 Requirements

 â€¢       Current Too-Busy behavior allows for retry
 â€¢       Too-Busy was originally defined to have a per connection scope
 â€¢       MUST only be used when a specific server exists
 o       This might mean that Too-Busy cannot be used for the throttle
 error without updating the definition of Too-Busy behavior
 â€¢       Unable-to-deliver might be another alternative for throttling
 behavior

 â€¢       Need new error response behavior â€“ DOIC needs error response
 behavior to prevent retries due to the message being throttled.

 â€¢       Need to handle case where transaction client supports the
 throttling error behavior and for transaction clients that do not support
 the throttling error behavior.

 Proposal: Use Unable-to-Comply error code when throttling by agent, too-
 busy when throttling by server

 Use case where agent is reacting node â€“ throttled messages should result
 in Unable-to-Comply

 Use case â€“ agent throttling when client supports DOIC unable-to-comply
 also works

 Use case â€“ Server throttling â€“ too-busy works

 Could add optional â€œerror-diagnostic AVPâ€ to indicate the reason for
 unable-to-comply â€“ should be addressed in a separate RFC

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  new
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Sun Oct 19 23:44:11 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 270AD1A6FB0 for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:44:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v6r2ZoHo6xBn for <dime@ietfa.amsl.com>; Sun, 19 Oct 2014 23:44:09 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 186361A6FAE for <dime@ietf.org>; Sun, 19 Oct 2014 23:44:09 -0700 (PDT)
Received: from localhost ([::1]:56520 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg6hK-0006vM-Qp; Sun, 19 Oct 2014 23:44:06 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 06:44:06 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/57#comment:2
Message-ID: <081.96c9cb2385d71963616bbf115ebd0551@trac.tools.ietf.org>
References: <066.89ca14db25e51cc9abb1531f0f99f646@trac.tools.ietf.org>
X-Trac-Ticket-ID: 57
In-Reply-To: <066.89ca14db25e51cc9abb1531f0f99f646@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/GB6dEa2-7WNF6qhbhO5TBao6o7Q
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #57 (draft-ietf-dime-ovli): Handling of "Realm-Routed" Overload report type
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 06:44:10 -0000

#57: Handling of "Realm-Routed" Overload report type

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => invalid


Comment:

 Consensus was reached to stay with two report types, host and realm.  The
 definition of these two report types is defined in #23.

 As a result, the concept of a "realm-routed" report type is covered by the
 realm report and the concept of a realm report that covers all requests to
 the realm, independent of request type, was left for a potential future
 extension.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  invalid
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/57#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 00:03:23 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2CD8B1A1BF8 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 00:03:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0KK_aSrhCKA1 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 00:03:16 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6C5D81A6FC3 for <dime@ietf.org>; Mon, 20 Oct 2014 00:03:16 -0700 (PDT)
Received: from localhost ([::1]:57820 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg6zo-0002tv-Kv; Mon, 20 Oct 2014 00:03:12 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 07:03:12 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/77#comment:1
Message-ID: <081.85e4d7195d716ffbdc495e2ecfb3d633@trac.tools.ietf.org>
References: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
X-Trac-Ticket-ID: 77
In-Reply-To: <066.d4c405dbb2245ca94afc738db13a2a20@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/QUK8NDutLMUvpBaEPYsoZt44IX0
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #77 (draft-ietf-dime-ovli): Section 4.2.3 - Reporting node behavior (overload report handling)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 07:03:20 -0000

#77: Section 4.2.3 - Reporting node behavior (overload report handling)

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => invalid


Comment:

 Agreed to close with no change as these requirements are already addressed
 in the syntax definition.

 Reaffirmed consensus on report-type being required due to the need for it
 to be used by a reporting node to help differentiate reports when there
 are multiple in a message.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  invalid
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/77#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 01:10:32 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0166C1A6FDA for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:01:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b_ClGLQZJieK for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:01:31 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7A4CC1A6FD9 for <dime@ietf.org>; Mon, 20 Oct 2014 01:01:31 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:50304 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xg7uD-0009CO-Cq for dime@ietf.org; Mon, 20 Oct 2014 01:01:31 -0700
Message-ID: <5444C157.6010809@usdonovans.com>
Date: Mon, 20 Oct 2014 10:01:27 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------000004040007010809070201"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/aKPbsOBgAjJNB6xkpjG6qQfgJgk
X-Mailman-Approved-At: Mon, 20 Oct 2014 01:10:28 -0700
Subject: [Dime] Change to -04 version - removed document restructuring information
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:01:41 -0000

This is a multi-part message in MIME format.
--------------000004040007010809070201
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

All,

I have removed the appendix that showed the mapping used to restructure 
the document.  I also removed the normative, non normative indicators in 
the section headers that were added to aid in the understanding of the 
restructuring.

This change has been checked into github.

I have also attached the diff resulting from this change.

I will be occasionally attaching a diff to checkpoint changes made up to 
that point.

Regards,

Steve

--------------000004040007010809070201
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.</td><td> </td><td class="right">Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Internet-Draft                                                  Broadcom</td><td> </td><td class="right">Internet-Draft                                                  Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Intended status: Standards Track                         S. Donovan, Ed.</td><td> </td><td class="right">Intended status: Standards Track                         S. Donovan, Ed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">Expires: April <span class="delete">12</span>, 2015                                      B. Campbell</td><td> </td><td class="rblock">Expires: April <span class="insert">23</span>, 2015                                      B. Campbell</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                                  Oracle</td><td> </td><td class="right">                                                                  Oracle</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                               L. Morand</td><td> </td><td class="right">                                                               L. Morand</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                             Orange Labs</td><td> </td><td class="right">                                                             Orange Labs</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                        <span class="delete"> October 9</span>, 2014</td><td> </td><td class="rblock">                                                        <span class="insert">October 20</span>, 2014</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Diameter Overload Indication Conveyance</td><td> </td><td class="right">                Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                      draft-ietf-dime-ovli-04.txt</td><td> </td><td class="right">                      draft-ietf-dime-ovli-04.txt</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Abstract</td><td> </td><td class="right">Abstract</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification documents a Diameter Overload Control (DOC) base</td><td> </td><td class="right">   This specification documents a Diameter Overload Control (DOC) base</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution and the dissemination of the overload report information.</td><td> </td><td class="right">   solution and the dissemination of the overload report information.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Requirements</td><td> </td><td class="right">Requirements</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 1, line 41</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 1, line 41</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are working documents of the Internet Engineering</td><td> </td><td class="right">   Internet-Drafts are working documents of the Internet Engineering</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Task Force (IETF).  Note that other groups may also distribute</td><td> </td><td class="right">   Task Force (IETF).  Note that other groups may also distribute</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   working documents as Internet-Drafts.  The list of current Internet-</td><td> </td><td class="right">   working documents as Internet-Drafts.  The list of current Internet-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td> </td><td class="right">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are draft documents valid for a maximum of six months</td><td> </td><td class="right">   Internet-Drafts are draft documents valid for a maximum of six months</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and may be updated, replaced, or obsoleted by other documents at any</td><td> </td><td class="right">   and may be updated, replaced, or obsoleted by other documents at any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   time.  It is inappropriate to use Internet-Drafts as reference</td><td> </td><td class="right">   time.  It is inappropriate to use Internet-Drafts as reference</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   material or to cite them other than as "work in progress."</td><td> </td><td class="right">   material or to cite them other than as "work in progress."</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   This Internet-Draft will expire on April <span class="delete">12</span>, 2015.</td><td> </td><td class="rblock">   This Internet-Draft will expire on April <span class="insert">23</span>, 2015.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Copyright Notice</td><td> </td><td class="right">Copyright Notice</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Copyright (c) 2014 IETF Trust and the persons identified as the</td><td> </td><td class="right">   Copyright (c) 2014 IETF Trust and the persons identified as the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   document authors.  All rights reserved.</td><td> </td><td class="right">   document authors.  All rights reserved.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td> </td><td class="right">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Provisions Relating to IETF Documents</td><td> </td><td class="right">   Provisions Relating to IETF Documents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td> </td><td class="right">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   publication of this document.  Please review these documents</td><td> </td><td class="right">   publication of this document.  Please review these documents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   carefully, as they describe your rights and restrictions with respect</td><td> </td><td class="right">   carefully, as they describe your rights and restrictions with respect</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to this document.  Code Components extracted from this document must</td><td> </td><td class="right">   to this document.  Code Components extracted from this document must</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   include Simplified BSD License text as described in Section 4.e of</td><td> </td><td class="right">   include Simplified BSD License text as described in Section 4.e of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the Trust Legal Provisions and are provided without warranty as</td><td> </td><td class="right">   the Trust Legal Provisions and are provided without warranty as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   described in the Simplified BSD License.</td><td> </td><td class="right">   described in the Simplified BSD License.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   <span class="delete">4</span></td><td> </td><td class="rblock">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   <span class="insert">3</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td> </td><td class="right">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.1.  Piggybacking Principle <span class="delete">(Non normative)</span>  . . . . . . . . .   6</td><td> </td><td class="rblock">     3.1.  Piggybacking Principle  <span class="insert">. . . . . . . .</span> . . . . . . . . .   6</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.2.  DOIC Capability Announcement <span class="delete">(Non normative)</span>  . . . . . .   7</td><td> </td><td class="rblock">     3.2.  DOIC Capability Announcement  <span class="insert">. . . . . . . .</span> . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.3.  DOIC Overload Condition Reporting <span class="delete">(Non normative)</span> . . . .   9</td><td> </td><td class="rblock">     3.3.  DOIC Overload Condition Reporting <span class="insert">. . . . . . . .</span> . . . .   9</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.4.  DOIC Extensibility <span class="delete">(Non normative)</span>  . . . . . . . . . . .  10</td><td> </td><td class="rblock">     3.4.  DOIC Extensibility  <span class="insert">. . . . . . . .</span> . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.5.  Simplified Example Architecture <span class="delete">(Non normative)</span> . . . . .  10</td><td> </td><td class="rblock">     3.5.  Simplified Example Architecture <span class="insert">. . . . . . . .</span> . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.6.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">     3.6.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">           Solution <span class="delete">(Non normative)</span>  . . . . . . . . . . . . . . . .  <span class="delete">11</span></td><td> </td><td class="rblock">           Solution  . . . . . . . . . . . . . . . . <span class="insert">. . .</span> . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.1.  Application Classification  (Non normative)</span> . . . . .  11</td><td> </td><td class="rblock">       <span class="insert">3.6.1.</span>  Application <span class="insert">Classification</span>  . . . . . . . . . . . . .  <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">3.6.2.</span>  Application <span class="delete">Type Overload Implications  (Non</span></td><td> </td><td class="rblock"><span class="insert">       3.6.2.  Application Type Overload Implications</span>  . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">               normative)  .</span> . . . . . . . . . . . . . . . . . . . .  12</td><td> </td><td class="rblock">       3.6.3.  Request Transaction Classification  <span class="insert">. . . . . . . .</span> .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       3.6.3.  Request Transaction Classification  <span class="delete">(Non normative)</span> .  14</td><td> </td><td class="rblock">       3.6.4.  Request Type Overload Implications  <span class="insert">. . . . . . . .</span> .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       3.6.4.  Request Type Overload Implications  <span class="delete">(Non normative)</span> .  14</td><td> </td><td class="rblock">   4.  Solution Procedures <span class="insert">. . . . . .</span> . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  Solution Procedures <span class="delete">(Normative)</span> . . . . . . . . . . . . . . .  16</td><td> </td><td class="rblock">     4.1.  Capability Announcement <span class="insert">. . . . . .</span> . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.1.  Capability Announcement <span class="delete">(Normative)</span> . . . . . . . . . . .  16</td><td> </td><td class="rblock">       4.1.1.  Reacting Node Behavior  <span class="insert">. . . . . .</span> . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.1.  Reacting Node Behavior <span class="delete">(Normative)</span>  . . . . . . . . .  16</td><td> </td><td class="rblock">       4.1.2.  Reporting Node Behavior <span class="insert">. . . . . . .</span> . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.2.  Reporting Node Behavior  <span class="delete">(Normative)</span>  . . . . . . . .  17</td><td> </td><td class="rblock">       4.1.3.  Agent Behavior  <span class="insert">. . . . . .</span> . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.3.  Agent Behavior  <span class="delete">(Normative)</span> . . . . . . . . . . . . .  18</td><td> </td><td class="rblock">     4.2.  Overload Report Processing  <span class="insert">. . . . . .</span> . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.2.  Overload Report Processing <span class="delete">(Normative)</span>  . . . . . . . . .  18</td><td> </td><td class="rblock">       4.2.1.  Overload Control State  <span class="insert">. . . . . .</span> . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.1.  Overload Control State <span class="delete">(Normative)</span>  . . . . . . . . .  18</td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  <span class="insert">. . . . . .</span> . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  <span class="delete">(Normative)</span> . . . . . . . . .  20</td><td> </td><td class="rblock">       4.2.3.  Reporting Node Behavior <span class="insert">. . . . . . .</span> . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.3.  Reporting Node Behavior  <span class="delete">(Normative)</span>  . . . . . . . .  22</td><td> </td><td class="rblock">       4.2.4.  Agent Behavior  <span class="insert">. . . . . .</span> . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.4.  Agent Behavior  <span class="delete">(Normative)</span> . . . . . . . . . . . . .  22</td><td> </td><td class="rblock">     4.3.  Protocol Extensibility  <span class="insert">. . . . . .</span> . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.3.  Protocol Extensibility <span class="delete">(Normative)</span>  . . . . . . . . . . .  23</td><td> </td><td class="rblock">   5.  Loss Algorithm  <span class="insert">. . . . . .</span> . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm <span class="delete">(Normative)</span>  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="rblock">     5.1.  Overview  <span class="insert">. . . . . . . .</span> . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Overview <span class="delete">(Non normative)</span>  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</td><td> </td><td class="right">     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.3.  Reporting Node Behavior <span class="delete">(Normative)</span> . . . . . . . . . . .  25</td><td> </td><td class="rblock">     5.3.  Reporting Node Behavior <span class="insert">. . . . . .</span> . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.4.  Reacting Node Behavior <span class="delete">(Normative)</span>  . . . . . . . . . . .  25</td><td> </td><td class="rblock">     5.4.  Reacting Node Behavior  <span class="insert">. . . . . .</span> . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Attribute Value Pairs <span class="delete">(Normative)</span> . . . . . . . . . . . . . .  26</td><td> </td><td class="rblock">   6.  Attribute Value Pairs <span class="insert">. . . . . .</span> . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 3, line 26</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 3, line 25</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  37</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix A.  Issues left for future specifications  . . . . . . .  37</td><td> </td><td class="right">   Appendix A.  Issues left for future specifications  . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38</td><td> </td><td class="right">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td> </td><td class="right">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">           Host routed requests  . . . . . . . . . . . . . . . . . .  38</td><td> </td><td class="right">           Host routed requests  . . . . . . . . . . . . . . . . . .  38</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Appendix C.  Restructuring of -02 version of the draft  . . . . .  41</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">41</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">44</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 6, line 47</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 6, line 42</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that are "adjacent" for DOIC purposes may not be adjacent from a</td><td> </td><td class="right">   that are "adjacent" for DOIC purposes may not be adjacent from a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter, or transport, perspective.  For example, one or more</td><td> </td><td class="right">   Diameter, or transport, perspective.  For example, one or more</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter agents that do not support DOIC may exist between a given</td><td> </td><td class="right">   Diameter agents that do not support DOIC may exist between a given</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   pair of reporting and reacting nodes, as long as those agents pass</td><td> </td><td class="right">   pair of reporting and reacting nodes, as long as those agents pass</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   unknown AVPs through unmolested.  The report types described in this</td><td> </td><td class="right">   unknown AVPs through unmolested.  The report types described in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   document can safely pass through non-supporting agents.  This may not</td><td> </td><td class="right">   document can safely pass through non-supporting agents.  This may not</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be true for report types defined in future specifications.  Documents</td><td> </td><td class="right">   be true for report types defined in future specifications.  Documents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that introduce new report types MUST describe any limitations on</td><td> </td><td class="right">   that introduce new report types MUST describe any limitations on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   their use across non-supporting agents.</td><td> </td><td class="right">   their use across non-supporting agents.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.1.  Piggybacking Principle<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.1.  Piggybacking Principle</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control AVPs defined in this specification have been</td><td> </td><td class="right">   The overload control AVPs defined in this specification have been</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   designed to be piggybacked on top of existing application message</td><td> </td><td class="right">   designed to be piggybacked on top of existing application message</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   exchanges.  This is made possible by adding overload control top</td><td> </td><td class="right">   exchanges.  This is made possible by adding overload control top</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as</td><td> </td><td class="right">   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   optional AVPs into existing commands when the corresponding Command</td><td> </td><td class="right">   optional AVPs into existing commands when the corresponding Command</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Code Format (CCF) specification allows adding new optional AVPs (see</td><td> </td><td class="right">   Code Format (CCF) specification allows adding new optional AVPs (see</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 1.3.4 of [RFC6733]).</td><td> </td><td class="right">   Section 1.3.4 of [RFC6733]).</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes indicate support for DOIC by including the OC-</td><td> </td><td class="right">   Reacting nodes indicate support for DOIC by including the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 7, line 31</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 7, line 27</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Note that the overload control solution does not have fixed server</td><td> </td><td class="right">   Note that the overload control solution does not have fixed server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and client roles.  The DOIC node role is determined based on the</td><td> </td><td class="right">   and client roles.  The DOIC node role is determined based on the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message type: whether the message is a request (i.e. sent by a</td><td> </td><td class="right">   message type: whether the message is a request (i.e. sent by a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   "reacting node") or an answer (i.e. send by a "reporting node").</td><td> </td><td class="right">   "reacting node") or an answer (i.e. send by a "reporting node").</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Therefore, in a typical "client-server" deployment, the "client" MAY</td><td> </td><td class="right">   Therefore, in a typical "client-server" deployment, the "client" MAY</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   report its overload condition to the "server" for any server</td><td> </td><td class="right">   report its overload condition to the "server" for any server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   initiated message exchange.  An example of such is the server</td><td> </td><td class="right">   initiated message exchange.  An example of such is the server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requesting a re-authentication from a client.</td><td> </td><td class="right">   requesting a re-authentication from a client.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.2.  DOIC Capability Announcement<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.2.  DOIC Capability Announcement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solutions supports the ability for Diameter nodes to</td><td> </td><td class="right">   The DOIC solutions supports the ability for Diameter nodes to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   determine if other nodes in the path of a request support the</td><td> </td><td class="right">   determine if other nodes in the path of a request support the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution.  This capability is refered to as DOIC Capability</td><td> </td><td class="right">   solution.  This capability is refered to as DOIC Capability</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Announcement (DCA) and is separate from Diameter Capability Exchange.</td><td> </td><td class="right">   Announcement (DCA) and is separate from Diameter Capability Exchange.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DCA mechanism is built around the piggybacking principle used for</td><td> </td><td class="right">   The DCA mechanism is built around the piggybacking principle used for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   transporting Diameter overload AVPs.  This includes both DCA AVPs and</td><td> </td><td class="right">   transporting Diameter overload AVPs.  This includes both DCA AVPs and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVPs associated with Diameter overload reports.  This allows for the</td><td> </td><td class="right">   AVPs associated with Diameter overload reports.  This allows for the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   DCA AVPs to be carried across Diameter nodes that do not support the</td><td> </td><td class="right">   DCA AVPs to be carried across Diameter nodes that do not support the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 9, line 5</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 9, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   path of a request differ.  In this case, the agent updates the OC-</td><td> </td><td class="right">   path of a request differ.  In this case, the agent updates the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Feature AVP to reflect the mixture of the two sets of</td><td> </td><td class="right">   Supported-Feature AVP to reflect the mixture of the two sets of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported features.</td><td> </td><td class="right">   supported features.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The logic to determine the content of the modified OC-Supported-</td><td> </td><td class="right">      The logic to determine the content of the modified OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Feature AVP is out-of-scope for this specification and is left to</td><td> </td><td class="right">      Feature AVP is out-of-scope for this specification and is left to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      implementation decisions.  Care must be taken in doing so not to</td><td> </td><td class="right">      implementation decisions.  Care must be taken in doing so not to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      introduce interoperability issues for downstream or upstream DOIC</td><td> </td><td class="right">      introduce interoperability issues for downstream or upstream DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      nodes.</td><td> </td><td class="right">      nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.3.  DOIC Overload Condition Reporting<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.3.  DOIC Overload Condition Reporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   As with DOIC Capability Announcement, Overload Condition Reporting</td><td> </td><td class="right">   As with DOIC Capability Announcement, Overload Condition Reporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   uses new AVPs (Section 6.3) to indicate an overload condition.</td><td> </td><td class="right">   uses new AVPs (Section 6.3) to indicate an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP</td><td> </td><td class="right">   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   includes the type of report, an overload report ID, the length of</td><td> </td><td class="right">   includes the type of report, an overload report ID, the length of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   time that the report is valid and abatement algorithm specific AVPs.</td><td> </td><td class="right">   time that the report is valid and abatement algorithm specific AVPs.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Two types of overload reports are defined in this document, host</td><td> </td><td class="right">   Two types of overload reports are defined in this document, host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reports and realm reports.</td><td> </td><td class="right">   reports and realm reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 10, line 16</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 10, line 16</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   change the reporting node can send new overload reports requesting</td><td> </td><td class="right">   change the reporting node can send new overload reports requesting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   greater reduction if the condition gets worse or less reduction if</td><td> </td><td class="right">   greater reduction if the condition gets worse or less reduction if</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the condition improves.  The reporting node sends an overload report</td><td> </td><td class="right">   the condition improves.  The reporting node sends an overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with a duration of zero to indicate that the overlaod condition has</td><td> </td><td class="right">   with a duration of zero to indicate that the overlaod condition has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ended and use of the abatement algorithm is no longer needed.</td><td> </td><td class="right">   ended and use of the abatement algorithm is no longer needed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reacting node also determines when the overload report expires</td><td> </td><td class="right">   The reacting node also determines when the overload report expires</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   based on the OC-Validaty-Duration AVP in the overload report and</td><td> </td><td class="right">   based on the OC-Validaty-Duration AVP in the overload report and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   stops applying the abatement algorithm when the report expires.</td><td> </td><td class="right">   stops applying the abatement algorithm when the report expires.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.4.  DOIC Extensibility<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.4.  DOIC Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solutions is designed to be extensible.  This extensibility</td><td> </td><td class="right">   The DOIC solutions is designed to be extensible.  This extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is based on existing Diameter based extensibility mechanisms.</td><td> </td><td class="right">   is based on existing Diameter based extensibility mechanisms.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   There are multiple categories of extensions that are expected.  This</td><td> </td><td class="right">   There are multiple categories of extensions that are expected.  This</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   includes the definition of new overload abatement algorithms, the</td><td> </td><td class="right">   includes the definition of new overload abatement algorithms, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   definition of new report types and new definitions of the scope of</td><td> </td><td class="right">   definition of new report types and new definitions of the scope of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   messages impacted by an overload report.</td><td> </td><td class="right">   messages impacted by an overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes</td><td> </td><td class="right">   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 10, line 43</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 10, line 43</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload abatement algorithms use the OC-OLR AVP to communicate</td><td> </td><td class="right">   Overload abatement algorithms use the OC-OLR AVP to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload occurances.  This AVP can also be extended to add new AVPs</td><td> </td><td class="right">   overload occurances.  This AVP can also be extended to add new AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   allowing a reporting nodes to communicate additional information</td><td> </td><td class="right">   allowing a reporting nodes to communicate additional information</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   about handling an overload condition.</td><td> </td><td class="right">   about handling an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If necessary, new extensions can also define new top level AVPs.  It</td><td> </td><td class="right">   If necessary, new extensions can also define new top level AVPs.  It</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is, however, recommended that DOIC extensions use the OC-Supported-</td><td> </td><td class="right">   is, however, recommended that DOIC extensions use the OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features and OC-OLR to carry all DOIC related AVPs.</td><td> </td><td class="right">   Features and OC-OLR to carry all DOIC related AVPs.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.5.  Simplified Example Architecture<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.5.  Simplified Example Architecture</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Figure 1 illustrates the simplified architecture for Diameter</td><td> </td><td class="right">   Figure 1 illustrates the simplified architecture for Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload information conveyance.</td><td> </td><td class="right">   overload information conveyance.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">    Realm X                                  Same or other Realms</td><td> </td><td class="right">    Realm X                                  Same or other Realms</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;--------------------------------------&gt; &lt;----------------------&gt;</td><td> </td><td class="right">   &lt;--------------------------------------&gt; &lt;----------------------&gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      +--^-----+                 : (optional) :</td><td> </td><td class="right">      +--^-----+                 : (optional) :</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      |Diameter|                 :            :</td><td> </td><td class="right">      |Diameter|                 :            :</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      |Server A|--+     .--.     : +---^----+ :     .--.</td><td> </td><td class="right">      |Server A|--+     .--.     : +---^----+ :     .--.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 11, line 35</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 11, line 35</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     Figure 1: Simplified architecture choices for overload indication</td><td> </td><td class="right">     Figure 1: Simplified architecture choices for overload indication</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                 delivery</td><td> </td><td class="right">                                 delivery</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In Figure 1, the Diameter overload indication can be conveyed (1)</td><td> </td><td class="right">   In Figure 1, the Diameter overload indication can be conveyed (1)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   end-to-end between servers and clients or (2) between servers and</td><td> </td><td class="right">   end-to-end between servers and clients or (2) between servers and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter agent inside the realm and then between the Diameter agent</td><td> </td><td class="right">   Diameter agent inside the realm and then between the Diameter agent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and the clients when the Diameter agent acting as back-to-back-agent</td><td> </td><td class="right">   and the clients when the Diameter agent acting as back-to-back-agent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for DOIC purposes.</td><td> </td><td class="right">   for DOIC purposes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.6.  Considerations for Applications Integrating the DOIC Solution <span class="delete">(Non</span></td><td> </td><td class="rblock">3.6.  Considerations for Applications Integrating the DOIC Solution</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   THis section outlines considerations to be taken into account when</td><td> </td><td class="right">   THis section outlines considerations to be taken into account when</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   integrating the DOIC solution into Diameter applications.</td><td> </td><td class="right">   integrating the DOIC solution into Diameter applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.6.1.  Application Classification<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.6.1.  Application Classification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following is a classification of Diameter applications and</td><td> </td><td class="right">   The following is a classification of Diameter applications and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requests.  This discussion is meant to document factors that play</td><td> </td><td class="right">   requests.  This discussion is meant to document factors that play</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   into decisions made by the Diameter identity responsible for handling</td><td> </td><td class="right">   into decisions made by the Diameter identity responsible for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports.</td><td> </td><td class="right">   overload reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td> </td><td class="right">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   types of applications, session-less and session-based applications.</td><td> </td><td class="right">   types of applications, session-less and session-based applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The primary difference between these types of applications is the</td><td> </td><td class="right">   The primary difference between these types of applications is the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 12, line 41</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 12, line 41</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      but use other session-related information in the Diameter requests</td><td> </td><td class="right">      but use other session-related information in the Diameter requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td> </td><td class="right">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      example of a pseudo-session application.</td><td> </td><td class="right">      example of a pseudo-session application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The Credit-Control application defined in [RFC4006] is an example of</td><td> </td><td class="right">   The Credit-Control application defined in [RFC4006] is an example of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   a Diameter session-based application.</td><td> </td><td class="right">   a Diameter session-based application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The handling of overload reports must take the type of application</td><td> </td><td class="right">   The handling of overload reports must take the type of application</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   into consideration, as discussed in Section 3.6.2.</td><td> </td><td class="right">   into consideration, as discussed in Section 3.6.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.6.2.  Application Type Overload Implications<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.6.2.  Application Type Overload Implications</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section discusses considerations for mitigating overload</td><td> </td><td class="right">   This section discusses considerations for mitigating overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reported by a Diameter entity.  This discussion focuses on the type</td><td> </td><td class="right">   reported by a Diameter entity.  This discussion focuses on the type</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   of application.  Section 3.6.3 discusses considerations for handling</td><td> </td><td class="right">   of application.  Section 3.6.3 discusses considerations for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   various request types when the target server is known to be in an</td><td> </td><td class="right">   various request types when the target server is known to be in an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded state.</td><td> </td><td class="right">   overloaded state.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   These discussions assume that the strategy for mitigating the</td><td> </td><td class="right">   These discussions assume that the strategy for mitigating the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reported overload is to reduce the overall workload sent to the</td><td> </td><td class="right">   reported overload is to reduce the overall workload sent to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded entity.  The concept of applying overload treatment to</td><td> </td><td class="right">   overloaded entity.  The concept of applying overload treatment to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 14, line 5</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 14, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      towards an overloaded Diameter entity for a session-based</td><td> </td><td class="right">      towards an overloaded Diameter entity for a session-based</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      application might tend to reject new session requests prior to</td><td> </td><td class="right">      application might tend to reject new session requests prior to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      rejecting intra-session requests.  In addition, session ending</td><td> </td><td class="right">      rejecting intra-session requests.  In addition, session ending</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests might be given a lower probability of being rejected as</td><td> </td><td class="right">      requests might be given a lower probability of being rejected as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      rejecting session ending requests could result in session status</td><td> </td><td class="right">      rejecting session ending requests could result in session status</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      being out of sync between the Diameter clients and servers.</td><td> </td><td class="right">      being out of sync between the Diameter clients and servers.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Application designers that would decide to reject mid-session</td><td> </td><td class="right">      Application designers that would decide to reject mid-session</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests will need to consider whether the rejection invalidates</td><td> </td><td class="right">      requests will need to consider whether the rejection invalidates</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the session and any resulting session clean-up procedures.</td><td> </td><td class="right">      the session and any resulting session clean-up procedures.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.6.3.  Request Transaction Classification<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.6.3.  Request Transaction Classification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Independent Request:</td><td> </td><td class="right">   Independent Request:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      An independent request is not correlated to any other requests</td><td> </td><td class="right">      An independent request is not correlated to any other requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      and, as such, the lifetime of the session-id is constrained to an</td><td> </td><td class="right">      and, as such, the lifetime of the session-id is constrained to an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      individual transaction.</td><td> </td><td class="right">      individual transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Session-Initiating Request:</td><td> </td><td class="right">   Session-Initiating Request:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      A session-initiating request is the initial message that</td><td> </td><td class="right">      A session-initiating request is the initial message that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l12" /><small>skipping to change at</small><em> page 14, line 45</em></th><th> </th><th><a name="part-r12" /><small>skipping to change at</small><em> page 14, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Pseudo-Session Requests:</td><td> </td><td class="right">   Pseudo-Session Requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Pseudo-session requests are independent requests and do not use</td><td> </td><td class="right">      Pseudo-session requests are independent requests and do not use</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the same Session-Id but are correlated by other session-related</td><td> </td><td class="right">      the same Session-Id but are correlated by other session-related</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      information contained in the request.  There exists Diameter</td><td> </td><td class="right">      information contained in the request.  There exists Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      applications that define an expected ordering of transactions.</td><td> </td><td class="right">      applications that define an expected ordering of transactions.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      This sequencing of independent transactions results in a pseudo</td><td> </td><td class="right">      This sequencing of independent transactions results in a pseudo</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</td><td> </td><td class="right">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      [Cx] application are examples of pseudo-session requests.</td><td> </td><td class="right">      [Cx] application are examples of pseudo-session requests.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">3.6.4.  Request Type Overload Implications<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">3.6.4.  Request Type Overload Implications</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The request classes identified in Section 3.6.3 have implications on</td><td> </td><td class="right">   The request classes identified in Section 3.6.3 have implications on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   decisions about which requests should be throttled first.  The</td><td> </td><td class="right">   decisions about which requests should be throttled first.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   following list of request treatment regarding throttling is provided</td><td> </td><td class="right">   following list of request treatment regarding throttling is provided</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   as guidelines for application designers when implementing the</td><td> </td><td class="right">   as guidelines for application designers when implementing the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter overload control mechanism described in this document.  The</td><td> </td><td class="right">   Diameter overload control mechanism described in this document.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   exact behavior regarding throttling is a matter of local policy,</td><td> </td><td class="right">   exact behavior regarding throttling is a matter of local policy,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   unless specifically defined for the application.</td><td> </td><td class="right">   unless specifically defined for the application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Independent requests:</td><td> </td><td class="right">   Independent requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l13" /><small>skipping to change at</small><em> page 16, line 7</em></th><th> </th><th><a name="part-r13" /><small>skipping to change at</small><em> page 16, line 7</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      and server to maintain the ongoing session state.  Session</td><td> </td><td class="right">      and server to maintain the ongoing session state.  Session</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      terminating requests should be throttled less aggressively in</td><td> </td><td class="right">      terminating requests should be throttled less aggressively in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      order to gracefully terminate sessions, allow clean-up of the</td><td> </td><td class="right">      order to gracefully terminate sessions, allow clean-up of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      related resources (e.g. session state) and get rid of the need for</td><td> </td><td class="right">      related resources (e.g. session state) and get rid of the need for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      other intra-session requests, reducing the session management</td><td> </td><td class="right">      other intra-session requests, reducing the session management</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      impact on the overloaded entity.  The default handling of other</td><td> </td><td class="right">      impact on the overloaded entity.  The default handling of other</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      intra-session requests might be to treat them equally when making</td><td> </td><td class="right">      intra-session requests might be to treat them equally when making</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      throttling decisions.  There might also be application level</td><td> </td><td class="right">      throttling decisions.  There might also be application level</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      considerations whether some request types are favored over others.</td><td> </td><td class="right">      considerations whether some request types are favored over others.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.  Solution Procedures<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.  Solution Procedures</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section outlines the normative behavior associated with the DOIC</td><td> </td><td class="right">   This section outlines the normative behavior associated with the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution.</td><td> </td><td class="right">   solution.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.1.  Capability Announcement<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.1.  Capability Announcement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section defines DOIC Capability Announcement (DCA) behavior.</td><td> </td><td class="right">   This section defines DOIC Capability Announcement (DCA) behavior.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DCA procedures are used to indicate support for DOIC and support</td><td> </td><td class="right">   The DCA procedures are used to indicate support for DOIC and support</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for DOIC features.  The DOIC features include overload abatement</td><td> </td><td class="right">   for DOIC features.  The DOIC features include overload abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   algorithms supported.  It might also include new report types or</td><td> </td><td class="right">   algorithms supported.  It might also include new report types or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   other extensions documented in the future.</td><td> </td><td class="right">   other extensions documented in the future.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter nodes indicate support for DOIC by including the OC-</td><td> </td><td class="right">   Diameter nodes indicate support for DOIC by including the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP in messages sent or handled by the node.</td><td> </td><td class="right">   Supported-Features AVP in messages sent or handled by the node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter agents that support DOIC MUST ensure that all messages have</td><td> </td><td class="right">   Diameter agents that support DOIC MUST ensure that all messages have</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Supporting-Features AVP.  If a message handled by the DOIC</td><td> </td><td class="right">   the OC-Supporting-Features AVP.  If a message handled by the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent does not include the OC-Supported-Features AVP then the DOIC</td><td> </td><td class="right">   agent does not include the OC-Supported-Features AVP then the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent inserts the AVP.  If the message already has the AVP then the</td><td> </td><td class="right">   agent inserts the AVP.  If the message already has the AVP then the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent either leaves it unchanged in the relayed message or modifies</td><td> </td><td class="right">   agent either leaves it unchanged in the relayed message or modifies</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   it to reflect a mixed set of DOIC features.</td><td> </td><td class="right">   it to reflect a mixed set of DOIC features.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0021" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.1.1.  Reacting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.1.1.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node MUST include the OC-Supported-Features AVP in all</td><td> </td><td class="right">   A reacting node MUST include the OC-Supported-Features AVP in all</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request messages.</td><td> </td><td class="right">   request messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node MUST include the OC-Feature-Vector AVP with an</td><td> </td><td class="right">   A reacting node MUST include the OC-Feature-Vector AVP with an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indication of the loss algorithm.</td><td> </td><td class="right">   indication of the loss algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node SHOULD indicate support for all other DOIC features</td><td> </td><td class="right">   A reacting node SHOULD indicate support for all other DOIC features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   it supports.</td><td> </td><td class="right">   it supports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An OC-Supported-Features AVP in answer messages indicates there is a</td><td> </td><td class="right">   An OC-Supported-Features AVP in answer messages indicates there is a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node for the transaction.  The reacting node MAY take</td><td> </td><td class="right">   reporting node for the transaction.  The reacting node MAY take</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   action based on the features indicated in the OC-Feature-Vector AVP.</td><td> </td><td class="right">   action based on the features indicated in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that the loss abatement algorithm is the only feature</td><td> </td><td class="right">      Note that the loss abatement algorithm is the only feature</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      described in this document and it does not require action to be</td><td> </td><td class="right">      described in this document and it does not require action to be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      taken by the reacting node except when the answer message also has</td><td> </td><td class="right">      taken by the reacting node except when the answer message also has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      an overload report.  This behavior is described in Section 4.2 and</td><td> </td><td class="right">      an overload report.  This behavior is described in Section 4.2 and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Section 5.</td><td> </td><td class="right">      Section 5.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0022" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.1.2.  Reporting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.1.2.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Upon receipt of a request message, a reporting node determines if</td><td> </td><td class="right">   Upon receipt of a request message, a reporting node determines if</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   there is a reacting node for the transaction based on the presence of</td><td> </td><td class="right">   there is a reacting node for the transaction based on the presence of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Supported-Features AVP.</td><td> </td><td class="right">   the OC-Supported-Features AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Based on the content of the OC-Supported-Features AVP in the request</td><td> </td><td class="right">   Based on the content of the OC-Supported-Features AVP in the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message, the reporting node knows what overload control functionality</td><td> </td><td class="right">   message, the reporting node knows what overload control functionality</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported by reacting node(s).  The reporting node then acts</td><td> </td><td class="right">   supported by reacting node(s).  The reporting node then acts</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   accordingly for the subsequent answer messages it initiates.</td><td> </td><td class="right">   accordingly for the subsequent answer messages it initiates.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l14" /><small>skipping to change at</small><em> page 18, line 5</em></th><th> </th><th><a name="part-r14" /><small>skipping to change at</small><em> page 18, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td> </td><td class="right">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td> </td><td class="right">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   drafts in response messages for transactions where the request</td><td> </td><td class="right">   drafts in response messages for transactions where the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td> </td><td class="right">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Supported-Features AVP in the request message indicates that there</td><td> </td><td class="right">   OC-Supported-Features AVP in the request message indicates that there</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is no reacting node for the transaction.</td><td> </td><td class="right">   is no reacting node for the transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An agent MAY modify the OC-Supported-Features AVP carried in answer</td><td> </td><td class="right">   An agent MAY modify the OC-Supported-Features AVP carried in answer</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   messages.</td><td> </td><td class="right">   messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0023" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.1.3.  Agent Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.1.3.  Agent Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Editor's note -- Need to add this section.</td><td> </td><td class="right">   Editor's note -- Need to add this section.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0024" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.  Overload Report Processing<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.2.  Overload Report Processing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0025" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.1.  Overload Control State<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.2.1.  Overload Control State</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Both reacting and reporting nodes maintain an overload control state</td><td> </td><td class="right">   Both reacting and reporting nodes maintain an overload control state</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (OCS) for active overload reports.</td><td> </td><td class="right">   (OCS) for active overload reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.1.  Overload Control State for Reacting Nodes</td><td> </td><td class="right">4.2.1.1.  Overload Control State for Reacting Nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node maintains the following OCS per supported Diameter</td><td> </td><td class="right">   A reacting node maintains the following OCS per supported Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   application:</td><td> </td><td class="right">   application:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  A host-type Overload Control State for each Destination-Host</td><td> </td><td class="right">   o  A host-type Overload Control State for each Destination-Host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l15" /><small>skipping to change at</small><em> page 20, line 25</em></th><th> </th><th><a name="part-r15" /><small>skipping to change at</small><em> page 20, line 25</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes delete an OCS when it expires.</td><td> </td><td class="right">   Reporting nodes delete an OCS when it expires.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Editor's note: Reporting nodes should send updated overload reports</td><td> </td><td class="right">   Editor's note: Reporting nodes should send updated overload reports</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with a validity duration of zero for a period of time after an OCS</td><td> </td><td class="right">   with a validity duration of zero for a period of time after an OCS</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   expires or is removed due to the overload condition ending.</td><td> </td><td class="right">   expires or is removed due to the overload condition ending.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)</td><td> </td><td class="right">   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   when they detect the need to modify the requested amount of</td><td> </td><td class="right">   when they detect the need to modify the requested amount of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   application app-id traffic reduction.</td><td> </td><td class="right">   application app-id traffic reduction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0026" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.2.  Reacting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.2.2.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Once a reacting node receives an OC-OLR AVP from a reporting node, it</td><td> </td><td class="right">   Once a reacting node receives an OC-OLR AVP from a reporting node, it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   applies traffic abatement based on the selected algorithm with the</td><td> </td><td class="right">   applies traffic abatement based on the selected algorithm with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node and the current overload condition.  The reacting node</td><td> </td><td class="right">   reporting node and the current overload condition.  The reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   learns the reporting node supported abatement algorithms directly</td><td> </td><td class="right">   learns the reporting node supported abatement algorithms directly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   from the received answer message containing the OC-Supported-Features</td><td> </td><td class="right">   from the received answer message containing the OC-Supported-Features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVP.</td><td> </td><td class="right">   AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The received OC-Supported-Features AVP does not change the existing</td><td> </td><td class="right">   The received OC-Supported-Features AVP does not change the existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload condition and/or traffic abatement algorithm settings if the</td><td> </td><td class="right">   overload condition and/or traffic abatement algorithm settings if the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l16" /><small>skipping to change at</small><em> page 22, line 12</em></th><th> </th><th><a name="part-r16" /><small>skipping to change at</small><em> page 22, line 12</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   updated overload report indicates that the overload condition has</td><td> </td><td class="right">   updated overload report indicates that the overload condition has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ended and that the overload state is no longer valid.</td><td> </td><td class="right">   ended and that the overload state is no longer valid.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In the case that the validity duration expires or is explicitly</td><td> </td><td class="right">   In the case that the validity duration expires or is explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   signaled as being no longer valid the state associated with the</td><td> </td><td class="right">   signaled as being no longer valid the state associated with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report MUST be removed and any abatement associated with the</td><td> </td><td class="right">   overload report MUST be removed and any abatement associated with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report MUST be ended in a controlled fashion.  After</td><td> </td><td class="right">   overload report MUST be ended in a controlled fashion.  After</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   removing the overload state the sequence number MUST NOT be used for</td><td> </td><td class="right">   removing the overload state the sequence number MUST NOT be used for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   future comparisons of sequence numbers.</td><td> </td><td class="right">   future comparisons of sequence numbers.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0027" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.3.  Reporting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.2.3.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node is a Diameter node inserting an OC-OLR AVP in a</td><td> </td><td class="right">   A reporting node is a Diameter node inserting an OC-OLR AVP in a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter message in order to inform a reacting node about an overload</td><td> </td><td class="right">   Diameter message in order to inform a reacting node about an overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   condition and request Diameter traffic abatement.</td><td> </td><td class="right">   condition and request Diameter traffic abatement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The operation on the reporting node is straight forward.  The</td><td> </td><td class="right">   The operation on the reporting node is straight forward.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node learns the capabilities of the reacting node when it</td><td> </td><td class="right">   reporting node learns the capabilities of the reacting node when it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receives the OC-Supported-Features AVP as part of any Diameter</td><td> </td><td class="right">   receives the OC-Supported-Features AVP as part of any Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request message.  If the reporting node shares at least one common</td><td> </td><td class="right">   request message.  If the reporting node shares at least one common</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   feature with the reacting node, then the DOIC can be enabled between</td><td> </td><td class="right">   feature with the reacting node, then the DOIC can be enabled between</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l17" /><small>skipping to change at</small><em> page 22, line 45</em></th><th> </th><th><a name="part-r17" /><small>skipping to change at</small><em> page 22, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0028" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.4.  Agent Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.2.4.  Agent Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Editor's note -- Need to add this section.</td><td> </td><td class="right">   Editor's note -- Need to add this section.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0029" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.3.  Protocol Extensibility<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The extention may also define new AVPs for use in DOIC Capability</td><td> </td><td class="right">   The extention may also define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Anouncement and for use in DOIC Overload reporting.  These new AVP</td><td> </td><td class="right">   Anouncement and for use in DOIC Overload reporting.  These new AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l18" /><small>skipping to change at</small><em> page 24, line 5</em></th><th> </th><th><a name="part-r18" /><small>skipping to change at</small><em> page 24, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   backward compatibility for the given OC-Report-Type AVP value implied</td><td> </td><td class="right">   backward compatibility for the given OC-Report-Type AVP value implied</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   report handling semantics.  If the new sub-AVPs imply new semantics</td><td> </td><td class="right">   report handling semantics.  If the new sub-AVPs imply new semantics</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for handling the indicated report type, then a new OC-Report-Type AVP</td><td> </td><td class="right">   for handling the indicated report type, then a new OC-Report-Type AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   value MUST be defined.</td><td> </td><td class="right">   value MUST be defined.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   New features (feature bits in the OC-Feature-Vector AVP) and report</td><td> </td><td class="right">   New features (feature bits in the OC-Feature-Vector AVP) and report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As</td><td> </td><td class="right">   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with any Diameter specification, new AVPs MUST also be registered</td><td> </td><td class="right">   with any Diameter specification, new AVPs MUST also be registered</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with IANA.  See Section 8 for the required procedures.</td><td> </td><td class="right">   with IANA.  See Section 8 for the required procedures.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0030" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.  Loss Algorithm<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">5.  Loss Algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section documents the Diameter overload loss abatement</td><td> </td><td class="right">   This section documents the Diameter overload loss abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   algorithm.</td><td> </td><td class="right">   algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0031" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.1.  Overview<span class="delete"> (Non normative)</span></td><td> </td><td class="rblock">5.1.  Overview</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC specification supports the ability for multiple overload</td><td> </td><td class="right">   The DOIC specification supports the ability for multiple overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms to be specified.  The abatement algorithm used</td><td> </td><td class="right">   abatement algorithms to be specified.  The abatement algorithm used</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for any instance of overload is determined by the Diameter Overload</td><td> </td><td class="right">   for any instance of overload is determined by the Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Capability Announcement process documented in Section 4.1.</td><td> </td><td class="right">   Capability Announcement process documented in Section 4.1.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The loss algorithm described in this section is the default algorithm</td><td> </td><td class="right">   The loss algorithm described in this section is the default algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that must be supported by all Diameter nodes that support DOIC.</td><td> </td><td class="right">   that must be supported by all Diameter nodes that support DOIC.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The loss algorithm is designed to be a straightforward and stateless</td><td> </td><td class="right">   The loss algorithm is designed to be a straightforward and stateless</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l19" /><small>skipping to change at</small><em> page 25, line 14</em></th><th> </th><th><a name="part-r19" /><small>skipping to change at</small><em> page 25, line 14</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">5.2.  Use of OC-Reduction-Percentage AVP</td><td> </td><td class="right">5.2.  Use of OC-Reduction-Percentage AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node using the loss algorithm must use the OC-Reduction-</td><td> </td><td class="right">   A reporting node using the loss algorithm must use the OC-Reduction-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Percentage AVP (Section 6.7 to indicated the desired percentage of</td><td> </td><td class="right">   Percentage AVP (Section 6.7 to indicated the desired percentage of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic reduction.)</td><td> </td><td class="right">   traffic reduction.)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Editor's note: The above duplicates what is in the OC-Reduction-</td><td> </td><td class="right">      Editor's note: The above duplicates what is in the OC-Reduction-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Percentage AVP section can probably be removed.</td><td> </td><td class="right">      Percentage AVP section can probably be removed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0032" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.3.  Reporting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">5.3.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The method a reporting nodes uses to determine the amount of traffic</td><td> </td><td class="right">   The method a reporting nodes uses to determine the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reduction required to address an overload condition is an</td><td> </td><td class="right">   reduction required to address an overload condition is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implementation decision.</td><td> </td><td class="right">   implementation decision.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a reporting node that has selected the loss abatement algorithm</td><td> </td><td class="right">   When a reporting node that has selected the loss abatement algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   determines the need to request a traffic reduction it must include an</td><td> </td><td class="right">   determines the need to request a traffic reduction it must include an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP in all response messages.</td><td> </td><td class="right">   OC-OLR AVP in all response messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node must indicate a percentage reduction in the OC-</td><td> </td><td class="right">   The reporting node must indicate a percentage reduction in the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l20" /><small>skipping to change at</small><em> page 25, line 36</em></th><th> </th><th><a name="part-r20" /><small>skipping to change at</small><em> page 25, line 36</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node may change the reduction percentage in subsequent</td><td> </td><td class="right">   The reporting node may change the reduction percentage in subsequent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports.  When doing so the reporting node must conform to</td><td> </td><td class="right">   overload reports.  When doing so the reporting node must conform to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report handing specified in Section 4.2.3.</td><td> </td><td class="right">   overload report handing specified in Section 4.2.3.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When the reporting node determines it no longer needs a reduction in</td><td> </td><td class="right">   When the reporting node determines it no longer needs a reduction in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic the reporting node should send an overload report indicating</td><td> </td><td class="right">   traffic the reporting node should send an overload report indicating</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload report is no longer valid, as specified in</td><td> </td><td class="right">   the overload report is no longer valid, as specified in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 4.2.3.</td><td> </td><td class="right">   Section 4.2.3.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0033" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.4.  Reacting Node Behavior<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">5.4.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The method a reacting node uses to determine which request messages</td><td> </td><td class="right">   The method a reacting node uses to determine which request messages</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   are given abatement treatment is an implementation decision.</td><td> </td><td class="right">   are given abatement treatment is an implementation decision.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When receiving an OC-OLR in an answer message where the algorithm</td><td> </td><td class="right">   When receiving an OC-OLR in an answer message where the algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicated in the OC-Supported-Features AVP is the loss algorithm, the</td><td> </td><td class="right">   indicated in the OC-Supported-Features AVP is the loss algorithm, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reacting node must attempt to apply abatement treatment to the</td><td> </td><td class="right">   reacting node must attempt to apply abatement treatment to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requested percentage of request messages sent.</td><td> </td><td class="right">   requested percentage of request messages sent.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note: the loss algorithm is a stateless algorithm.  As a result,</td><td> </td><td class="right">      Note: the loss algorithm is a stateless algorithm.  As a result,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l21" /><small>skipping to change at</small><em> page 26, line 32</em></th><th> </th><th><a name="part-r21" /><small>skipping to change at</small><em> page 26, line 32</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   It is suggested that the reacting node decrease the amount of traffic</td><td> </td><td class="right">   It is suggested that the reacting node decrease the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   given abatement treatment by 20% each second until the reduction is</td><td> </td><td class="right">   given abatement treatment by 20% each second until the reduction is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   completely removed and no traffic is given abatement treatment.</td><td> </td><td class="right">   completely removed and no traffic is given abatement treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The goal of this behavior is to reduce the probability of overload</td><td> </td><td class="right">      The goal of this behavior is to reduce the probability of overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      condition thrashing where an immediate transition from 100%</td><td> </td><td class="right">      condition thrashing where an immediate transition from 100%</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reduction to 0% reduction results in the reporting node moving</td><td> </td><td class="right">      reduction to 0% reduction results in the reporting node moving</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      quickly back into an overload condition.</td><td> </td><td class="right">      quickly back into an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0034" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">6.  Attribute Value Pairs<span class="delete"> (Normative)</span></td><td> </td><td class="rblock">6.  Attribute Value Pairs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section describes the encoding and semantics of the Diameter</td><td> </td><td class="right">   This section describes the encoding and semantics of the Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Indication Attribute Value Pairs (AVPs) defined in this</td><td> </td><td class="right">   Overload Indication Attribute Value Pairs (AVPs) defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   document.</td><td> </td><td class="right">   document.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When added to existing commands, both OC-Feature-Vector and OC-OLR</td><td> </td><td class="right">   When added to existing commands, both OC-Feature-Vector and OC-OLR</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVPs SHOULD have the M-bit flag cleared to avoid backward</td><td> </td><td class="right">   AVPs SHOULD have the M-bit flag cleared to avoid backward</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   compatibility issues.</td><td> </td><td class="right">   compatibility issues.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A new application specification can incorporate the overload control</td><td> </td><td class="right">   A new application specification can incorporate the overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l22" /><small>skipping to change at</small><em> page 41, line 47</em></th><th> </th><th><a name="part-r22" /><small>skipping to change at</small><em> page 41, line 47</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       likely different than that for either S1 or S2.  The agent</td><td> </td><td class="right">       likely different than that for either S1 or S2.  The agent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       forward's S2's report back to the client in the Diameter answer.</td><td> </td><td class="right">       forward's S2's report back to the client in the Diameter answer.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       Additionally, the agent generates a new report for the realm of</td><td> </td><td class="right">       Additionally, the agent generates a new report for the realm of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       "realm", and inserts that report into the answer.  The client</td><td> </td><td class="right">       "realm", and inserts that report into the answer.  The client</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       throttles requests with Destination-Host:S1 at one rate, requests</td><td> </td><td class="right">       throttles requests with Destination-Host:S1 at one rate, requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       with Destination-Host:S2 at another rate, and requests with no</td><td> </td><td class="right">       with Destination-Host:S2 at another rate, and requests with no</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       Destination-Host AVP at yet a third rate.  (Since S3 has not</td><td> </td><td class="right">       Destination-Host AVP at yet a third rate.  (Since S3 has not</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       indicated overload, the client does not throttle requests with</td><td> </td><td class="right">       indicated overload, the client does not throttle requests with</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       Destination-Host:S3.)</td><td> </td><td class="right">       Destination-Host:S3.)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0035" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">Appendix C.  Restructuring of -02 version of the draft</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   This section captures the initial plan for restructuring the DOIC</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   specification from the -02 version to the new -03 version.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   1. Introduction (non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- Existing Text from section 1. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   2. Terminology and Abbreviations (non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- Existing Text from section 2. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   3. Solution Overview (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- Existing text from section 3. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.1 Overload Control Endpoints (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- New text leveraging text from existing section 5.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.2 Piggybacking Principle (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- Existing text from existing section 5.2, with enhancements --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.3 DOIC Capability Discovery (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- New text leveraging text from existing section 5.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.4 DOIC Overload Condition Reporting (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- New text --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.5 DOIC Extensibility (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- New text leveraging text from existing Section 5.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.5 Simplified Example Architecture (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- Existing text from section 3.1.6, with enhancements --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     3.6 Considerations for Applications Integrating the DOIC Solution (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">         -- New text --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.1. Application Classification  (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">              -- Existing text from section 3.1.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.2. Application Type Overload Implications  (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">              -- Existing text from section 3.1.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.3. Request Transaction Classification  (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">              -- Existing text from section 3.1.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.4. Request Type Overload Implications  (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">              -- Existing text from section 3.1.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   4. Solution Procedures (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     4.1 Capability Announcement (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">        -- Existing text from section 5.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.1.1. Reacting Node Behavior (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.3.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.1.2. Reporting Node Behavior  (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.3.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.1.3. Agent Behavior  (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.3.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     4.2. Overload Report Processing (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.2.1. Overload Control State (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.5.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.2.2. Reacting Node Behavior  (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.5.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.2.3. Reporting Node Behavior  (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.5.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.2.4. Agent Behavior  (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">            -- Existing text from section 5.5.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     4.3. Protocol Extensibility (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">        -- Existing text from section 5.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   5. Loss Algorithm (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- New text pulling from information spread through the document --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     5.1. Overview (Non normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- New text pulling from information spread through the document --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     5.2. Reporting Node Behavior (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- New text pulling from information spread through the document --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     5.3. Reacting Node Behavior (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- New text pulling from information spread through the document --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   6. Attribute Value Pairs (Normative)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- Existing text from section 4. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.1. OC-Supported-Features AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.2. OC-Feature-Vector AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.3. OC-OLR AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.4. OC-Sequence-Number AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.5. OC-Validity-Duration AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.5 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.6. OC-Report-Type AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.6 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.7. OC-Reduction-Percentage AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.7 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     6.8. Attribute Value Pair flag rules</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 4.8 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   7. Error Response Codes</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- New text based on resolution of issue --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   8. IANA Considerations</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      -- Existing text from section 7. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     8.1. AVP codes</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 7.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     8.2. New registries</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">          -- Existing text from section 7.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   9. Security Considerations</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       -- Existing text from section 8. --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.1. Potential Threat Modes</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           -- Existing text from section 8.1 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.2. Denial of Service Attacks</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           -- Existing text from section 8.2 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.3. Non-Compliant Nodes</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           -- Existing text from section 8.3 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     9.4. End-to End-Security Issues</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           -- Existing text from section 8.4 --</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   10. Contributors</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   11. References</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     11.1. Normative References</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     11.2. Informative References</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Appendix A. Issues left for future specifications</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     A.1. Additional traffic abatement algorithms</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     A.2. Agent Overload</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     A.3. DIAMETER_TOO_BUSY clarifications</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     A.4. Per reacting node reports</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Appendix B. Examples</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     B.1. Mix of Destination-Realm routed requests and Destination-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           Host routed requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Authors' Addresses</td><td> </td><td class="right">   Authors' Addresses</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0036" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">Authors' Addresses</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Jouni Korhonen (editor)</td><td> </td><td class="right">   Jouni Korhonen (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Broadcom</td><td> </td><td class="right">   Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Porkkalankatu 24</td><td> </td><td class="right">   Porkkalankatu 24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Helsinki  FIN-00180</td><td> </td><td class="right">   Helsinki  FIN-00180</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Finland</td><td> </td><td class="right">   Finland</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Email: jouni.nospam@gmail.com</td><td> </td><td class="right">   Email: jouni.nospam@gmail.com</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Steve Donovan (editor)</td><td> </td><td class="right">   Steve Donovan (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Oracle</td><td> </td><td class="right">   Oracle</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 36 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>172 lines changed or deleted</i></th><th><i> </i></th><th><i>57 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . . 
  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25\n     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.4.  Reacting Node Behav
 ior  . . . . . . . . . . . . . . . . .  25\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32\n   8.  IANA Considerations . . . . . . . . . . . . .
  . . . . . . . .  32\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  33\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  33\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  35\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  35\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  36\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  37\n   Appendix A.  Issues left for future specifications  . . . . . . .  37\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37\n     A.2.  Ag
 ent Overload  . . . . . . . . . . . . . . . . . . . . .  37\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in thi
 s specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n 
      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload c
 ontrol maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting node
 s.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\
 n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each applicat
 ion and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section
  6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of real
 m is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their
  use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by 
 the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   so
 lution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the react
 ing nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported
  by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in
  extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indica
 te an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining
  the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communic
 ate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of
  the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also 
 have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\
 n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base
  protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   
 types of applications, session-less and session-based applications.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n 
      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of appli
 cation.  Section 3.6.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend
  upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      
 more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the 
 Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\
 n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This se
 quencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling dec
 isions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo
 -session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The d
 efault handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or
  handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the lo
 ss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken by the reacting node except when the answer message also has\n      an overload report.  This behavior is described in Section 4.2 and\n      Section 5.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Feature
 s AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment
  scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   
 (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  
 Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for
  reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e
 . when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an an
 swer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement 
 based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on t
 he reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Di
 ameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   over
 load control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the
  validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A repo
 rting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  If the reporting node shares at least one common\n   feature with the reacting node, then the DOIC can be enabled between\n   these DOIC nodes See Section 4.1 for further discussion on the\n   capability and feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and 
 the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload co
 ntrol solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications,
  setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP)
  and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and statel
 ess\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines 
 if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Use of OC-Reduction-Percentage AVP\n\n   A reporting node using the loss algorithm must use the OC-Reduction-\n   Percentage AVP (Section 6.7 to indicated the desired percentage of\n   traffic reduction.)\n\n      Editor\'s note: The above duplicates what is in the OC-Reduction-\n      Percentage AVP section can probably be removed.\n\n5.3.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to addre
 ss an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.4.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer
  message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the over
 load condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n      Editor\'s note: Need to add additional guidance to slowly increase\n      the rate of traffic sent to avoid a sudden spike in traffic, as\n      the spike in traffic could result in oscillation of the need for\n      overload control.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n 
      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload 
 control mechanisms works\n   on that application.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the n
 ode\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  At least one of the announced capabilities MUST match.  If\n   there is no single matching capability the reacting node MUST act as\n   if i
 t does not implement DOIC and cease inserting any DOIC related\n   AVPs into any Diameter messages with this specific reacting node.\n\n      Editor\'s note: The last sentence conflicts with the last sentence\n      two paragraphs up.  In reality, there will always be at least one\n      matching capability as all nodes supporting DOIC must support the\n      loss algorithm.  Suggest removing the last sentence.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abat
 ement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n     
             _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n      Editor\'s note: Need to specify what happens when two reports of\n      the same type are received.\n\n\n\n\n\n\nKor
 honen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validit
 y-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has
  recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload t
 reatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply t
 o requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, a
 bsence or value of the\n      Destination-Host AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The default value of the OC-Report-Type AVP is 0 (i.e. the host\n   report).\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it othe
 rwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015            
     [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+---
 -+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward c
 ompatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required 
 policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diame
 ter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\
 n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requi
 res an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that appl
 ies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nIntern
 et-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload
  control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to 
 deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DO
 IC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o
   Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI 
 TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for fut
 ure specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a 
 case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and r
 oute the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server.  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  I
 t\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for requests that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to
  handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _      
    _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n      
      _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__     
     _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _ 
         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1, DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destinat
 ion-Realm routed request.)\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 40]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S
 1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is probably different than the\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2
 \'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Destination-Host:S3.)\n\nAuthors\' Addresses\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben
  Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 42]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 12, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                               
           October 9, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of s
 ix months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 12, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text a
 s described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   4\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle (Non normative)  . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement (Non normative)  . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting (Non normative) . . . .   9\n     3.4.  DOIC Extensibility (Non normative)  . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture (Non normative) . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution (Non normative)  . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  (Non normative) . . . . .  11\n       3.6.2.  Applicatio
 n Type Overload Implications  (Non\n               normative)  . . . . . . . . . . . . . . . . . . . . .  12\n       3.6.3.  Request Transaction Classification  (Non normative) .  14\n       3.6.4.  Request Type Overload Implications  (Non normative) .  14\n   4.  Solution Procedures (Normative) . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement (Normative) . . . . . . . . . . .  16\n       4.1.1.  Reacting Node Behavior (Normative)  . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior  (Normative)  . . . . . . . .  17\n       4.1.3.  Agent Behavior  (Normative) . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing (Normative)  . . . . . . . . .  18\n       4.2.1.  Overload Control State (Normative)  . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  (Normative) . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior  (Normative)  . . . . . . . .  22\n       4.2.4.  Agent Behavior  (Normative) . . . . . . . . . . . . .  22\
 n     4.3.  Protocol Extensibility (Normative)  . . . . . . . . . . .  23\n   5.  Loss Algorithm (Normative)  . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview (Non normative)  . . . . . . . . . . . . . . . .  24\n     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25\n     5.3.  Reporting Node Behavior (Normative) . . . . . . . . . . .  25\n     5.4.  Reacting Node Behavior (Normative)  . . . . . . . . . . .  25\n   6.  Attribute Value Pairs (Normative) . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Exp
 ires April 12, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  33\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  33\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  35\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  35\n   10. Contributors  . . . . . . . . . . . . . . . . . .
  . . . . . .  36\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  37\n   Appendix A.  Issues left for future specifications  . . . . . . .  37\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  38\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  38\n   Appendix C.  Restructuring of -02 version of the draft  . . . . .  41\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  44\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   
 Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 3]\
 n_\nInternet-Draft                    DOIC                      October 2014\n\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter 
 node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC      
                 October 2014\n\n\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents m
 ay act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter r
 ealm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   namely the "loss"
  algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requ
 ests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport,
  perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle (Non normative)\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features 
 AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   
 "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement (Non normative)\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-S
 upported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n    
   clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As 
 a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this s
 pecification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n\n\nKorhonen, et al.         Expires April 12, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.3.  DOIC Overload Condition Reporting (Non normative)\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destinat
 ion-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require t
 racking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n\n\n\nKorhonen, et al
 .         Expires April 12, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility (Non normative)\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories o
 f extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new
  top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture (Non normative)\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client
  _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.
 6.  Considerations for Applications Integrating the DOIC Solution (Non\n      normative)\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification (Non normative)\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multipl
 e requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information i
 n the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications (Non normative)\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Section 3.6.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overl
 oaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Di
 ameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based app
 lications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 20
 14\n\n\n3.6.3.  Request Transaction Classification (Non normative)\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same S
 ession-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications (Non normative)\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be thr
 ottled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of req
 uests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n  
  Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some
  request types are favored over others.\n\n4.  Solution Procedures (Normative)\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement (Normative)\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it 
 unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior (Normative)\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken by the reacting node except when the answer message also has\n      an overload report.  This behavior is described in Section 4.2 and\n      Section 5.\n\n\n\n\nKorhonen, et al.         Expires Apr
 il 12, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior (Normative)\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abat
 ement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where th
 e request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior (Normative)\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing (Normative)\n\n4.2.1.  Overload Control State (Normative)\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sen
 ds host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains p
 er supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero
  seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (
 app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating 
 support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior (Normative)\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AV
 P.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR A
 VP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  Fo
 r example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously r
 ecorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an
 \n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior (Normative)\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  Th
 e\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  If the reporting node shares at least one common\n   feature with the reacting node, then the DOIC can be enabled between\n   these DOIC nodes See Section 4.1 for further discussion on the\n   capability and feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n  
  the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior (Normative)\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility (Normative)\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  Th
 is feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the
  features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\
 nKorhonen, et al.         Expires April 12, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm (Normative)\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview (Non normative)\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on
  the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the ind
 icated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Use of OC-Reduction-Percentage AVP\n\n   A reporting node using the loss algorithm must use the OC-Reduction-\n   Percentage AVP (Section 6.7 to indicated the desired percentage of\n   traffic reduction.)\n\n      Editor\'s note: The above duplicates what is in the OC-Reduction-\n      Percentage AVP section can probably be removed.\n\n5.3.  Reporting Node Behavior (Normative)\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction
  it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.4.  Reacting Node Behavior (Normative)\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   req
 uested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report t
 imes out unless\n   the previous overload report stated 0 percent reduction.\n\n      Editor\'s note: Need to add additional guidance to slowly increase\n      the rate of traffic sent to avoid a sudden spike in traffic, as\n      the spike in traffic could result in oscillation of the need for\n      overload control.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condi
 tion.\n\n6.  Attribute Value Pairs (Normative)\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 26]\n_\nInternet-Draft           
          DOIC                      October 2014\n\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specificat
 ion is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  At least one of the announced capabilities MUST match.  If\n   there is no single matching capability the reacting node MUST act as\n   if it does not implement DOIC and cease inserting any DOIC related\n   AVPs into any Diameter messages with this specific reacting node.\n\n      Editor\'s note: The las
 t sentence conflicts with the last sentence\n      two paragraphs up.  In reality, there will always be at least one\n      matching capability as all nodes supporting DOIC must support the\n      loss algorithm.  Suggest removing the last sentence.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey
  an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Vali
 dity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n      Editor\'s note: Need to specify what happens when two reports of\n      the same type are received.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequ
 ence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   Th
 e number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report 
 (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and i
 ts\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destinati
 on-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 30]\n_\nInternet-Draft           
          DOIC                      October 2014\n\n\n   The default value of the OC-Report-Type AVP is 0 (i.e. the host\n   report).\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused f
 or\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\
 n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report
 -Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Co
 des\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initi
 al assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending over
 load reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agen
 t for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer contai
 ning an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For exam
 ple, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assu
 me that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the
  presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality prot
 ection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier 
 to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradne
 r, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AV
 P Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   l
 eft for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable
 .  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Dest
 ination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server.  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the reque
 sts.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for requests that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed
  requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         
 _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n    
        _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent se
 lects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n           _         _         _        
  _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1, DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 40]\n_\nInternet-Draft                    DOIC                
       October 2014\n\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns ou
 t that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is probably different than the\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that repor
 t into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Destination-Host:S3.)\n\nAppendix C.  Restructuring of -02 version of the draft\n\n   This section captures the initial plan for restructuring the DOIC\n   specification from the -02 version to the new -03 version.\n\n   1. Introduction (non normative)\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 41]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      -- Existing Text from section 1. --\n   2. Terminology and Abbreviations (non normative)\n      -- Existing Text from section 2. --\n   3. Solution Overview (Non normative)\n      -- Existing text from section 3. --\n     3.1 Overload Control Endpoints
  (Non normative)\n         -- New text leveraging text from existing section 5.1 --\n     3.2 Piggybacking Principle (Non normative)\n         -- Existing text from existing section 5.2, with enhancements --\n     3.3 DOIC Capability Discovery (Non normative)\n         -- New text leveraging text from existing section 5.3 --\n     3.4 DOIC Overload Condition Reporting (Non normative)\n         -- New text --\n     3.5 DOIC Extensibility (Non normative)\n         -- New text leveraging text from existing Section 5.4 --\n     3.5 Simplified Example Architecture (Non normative)\n         -- Existing text from section 3.1.6, with enhancements --\n     3.6 Considerations for Applications Integrating the DOIC Solution (Non normative)\n         -- New text --\n       3.6.1. Application Classification  (Non normative)\n              -- Existing text from section 3.1.1 --\n       3.6.2. Application Type Overload Implications  (Non normative)\n              -- Existing text from section 3.1.2
  --\n       3.6.3. Request Transaction Classification  (Non normative)\n              -- Existing text from section 3.1.3 --\n       3.6.4. Request Type Overload Implications  (Non normative)\n              -- Existing text from section 3.1.4 --\n   4. Solution Procedures (Normative)\n     4.1 Capability Announcement (Normative)\n        -- Existing text from section 5.3 --\n       4.1.1. Reacting Node Behavior (Normative)\n            -- Existing text from section 5.3.1 --\n       4.1.2. Reporting Node Behavior  (Normative)\n            -- Existing text from section 5.3.2 --\n       4.1.3. Agent Behavior  (Normative)\n            -- Existing text from section 5.3.3 --\n     4.2. Overload Report Processing (Normative)\n       4.2.1. Overload Control State (Normative)\n            -- Existing text from section 5.5.1 --\n       4.2.2. Reacting Node Behavior  (Normative)\n            -- Existing text from section 5.5.2 --\n       4.2.3. Reporting Node Behavior  (Normative)\n           
  -- Existing text from section 5.5.3 --\n       4.2.4. Agent Behavior  (Normative)\n            -- Existing text from section 5.5.4 --\n     4.3. Protocol Extensibility (Normative)\n        -- Existing text from section 5.4 --\n   5. Loss Algorithm (Normative)\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 42]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      -- New text pulling from information spread through the document --\n     5.1. Overview (Non normative)\n          -- New text pulling from information spread through the document --\n     5.2. Reporting Node Behavior (Normative)\n          -- New text pulling from information spread through the document --\n     5.3. Reacting Node Behavior (Normative)\n          -- New text pulling from information spread through the document --\n   6. Attribute Value Pairs (Normative)\n      -- Existing text from section 4. --\n     6.1. OC-Supported-Features AVP\n          --
  Existing text from section 4.1 --\n     6.2. OC-Feature-Vector AVP\n          -- Existing text from section 4.2 --\n     6.3. OC-OLR AVP\n          -- Existing text from section 4.3 --\n     6.4. OC-Sequence-Number AVP\n          -- Existing text from section 4.4 --\n     6.5. OC-Validity-Duration AVP\n          -- Existing text from section 4.5 --\n     6.6. OC-Report-Type AVP\n          -- Existing text from section 4.6 --\n     6.7. OC-Reduction-Percentage AVP\n          -- Existing text from section 4.7 --\n     6.8. Attribute Value Pair flag rules\n          -- Existing text from section 4.8 --\n   7. Error Response Codes\n          -- New text based on resolution of issue --\n   8. IANA Considerations\n      -- Existing text from section 7. --\n     8.1. AVP codes\n          -- Existing text from section 7.1 --\n     8.2. New registries\n          -- Existing text from section 7.2 --\n   9. Security Considerations\n       -- Existing text from section 8. --\n     9.1. Potenti
 al Threat Modes\n           -- Existing text from section 8.1 --\n     9.2. Denial of Service Attacks\n           -- Existing text from section 8.2 --\n     9.3. Non-Compliant Nodes\n           -- Existing text from section 8.3 --\n     9.4. End-to End-Security Issues\n           -- Existing text from section 8.4 --\n   10. Contributors\n   11. References\n     11.1. Normative References\n     11.2. Informative References\n   Appendix A. Issues left for future specifications\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 43]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     A.1. Additional traffic abatement algorithms\n     A.2. Agent Overload\n     A.3. DIAMETER_TOO_BUSY clarifications\n     A.4. Per reacting node reports\n   Appendix B. Examples\n     B.1. Mix of Destination-Realm routed requests and Destination-\n           Host routed requests\n   Authors\' Addresses\n\n\nAuthors\' Addresses\n\n   Jouni Korhonen (
 editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\nKorhonen, et al.         Expires April 12, 2015                [Page 44]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------000004040007010809070201--


From nobody Mon Oct 20 01:23:44 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C063D1A6FD1 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:23:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id heoTMXdzZa9R for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:23:40 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 236441A6F39 for <dime@ietf.org>; Mon, 20 Oct 2014 01:23:40 -0700 (PDT)
Received: from localhost ([::1]:34495 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8Fc-00012W-Ax; Mon, 20 Oct 2014 01:23:36 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 08:23:36 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/68#comment:1
Message-ID: <090.f6378f7f9a4debc63e4a189576802cf2@trac.tools.ietf.org>
References: <075.8d19bd9550e16275f187acd9d2a6195d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 68
In-Reply-To: <075.8d19bd9550e16275f187acd9d2a6195d@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/sui8sk0MgYV-Q5pcZUCFTbzU0I8
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #68 (draft-ietf-dime-ovli): Loss as the common abatemen algorithm
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:23:41 -0000

#68: Loss as the common abatemen algorithm

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Consensus reached to change the wording to the following:" Since the
 "loss" abatement algorithm [crossref] is mandatory to implement, DOIC can
 always be enabled between these two endpoints.â€

 Changed in both sections mentioned above with expectation that the AVP
 description will be updated to pull out behavior definitions.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/68#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 01:48:51 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 442C31A6FF0 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:48:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YbiqMSM3ZU4d for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:48:49 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 16B331A6FEF for <dime@ietf.org>; Mon, 20 Oct 2014 01:48:48 -0700 (PDT)
Received: from localhost ([::1]:35480 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8dx-0000eV-Ab; Mon, 20 Oct 2014 01:48:45 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 08:48:45 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/71#comment:1
Message-ID: <090.9ebd4d96e50723be516d374d27c082b4@trac.tools.ietf.org>
References: <075.42ce9b1c1c8c40b23a5717c66ad4bd65@trac.tools.ietf.org>
X-Trac-Ticket-ID: 71
In-Reply-To: <075.42ce9b1c1c8c40b23a5717c66ad4bd65@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/RMFjrz0F4so_HFlAy9WDhxfGwlU
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload report even if OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:48:50 -0000

#71: Active overload report even if OC-OLR is not received

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Updated with the above suggested wording.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/71#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 01:52:54 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0BDB61A6FF5 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:52:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iaghmNF0v0Qz for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:52:52 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 57BD21A6FE7 for <dime@ietf.org>; Mon, 20 Oct 2014 01:52:52 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:50475 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xg8hv-0005rw-2H for dime@ietf.org; Mon, 20 Oct 2014 01:52:51 -0700
Message-ID: <5444CD61.9040503@usdonovans.com>
Date: Mon, 20 Oct 2014 10:52:49 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/BPJFkru-VDF2NTSLw6jmM0CDYi4
Subject: [Dime] Resolution to #71
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:52:53 -0000

I've updated github with the change to #71.  I did not manage to capture 
a diff on this one.

Steve


From nobody Mon Oct 20 01:58:12 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 08FC51A6FF1 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:58:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id d4O3W_pIosnN for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:58:08 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DE5141A6FCB for <dime@ietf.org>; Mon, 20 Oct 2014 01:58:08 -0700 (PDT)
Received: from localhost ([::1]:35842 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8n0-00043S-6m; Mon, 20 Oct 2014 01:58:06 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 08:58:06 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/76#comment:1
Message-ID: <081.f73c7c0dfe1e15270f06c52e2c24715e@trac.tools.ietf.org>
References: <066.4f1da7960fc11058290d816d3513056d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 76
In-Reply-To: <066.4f1da7960fc11058290d816d3513056d@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/UElUDjVgrU-9Z5SWe6iPk9Llgqc
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #76 (draft-ietf-dime-ovli): Add report type ot OCS at reporting node
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:58:10 -0000

#76: Add report type ot OCS at reporting node

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Updated as suggested above.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/76#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 01:59:46 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 420B91A6FCB for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:59:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3As6rxY1IcBc for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:59:44 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 127FB1A6FFC for <dime@ietf.org>; Mon, 20 Oct 2014 01:59:44 -0700 (PDT)
Received: from localhost ([::1]:35893 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8oW-0004BC-Qm; Mon, 20 Oct 2014 01:59:40 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 08:59:40 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/78#comment:1
Message-ID: <081.3e0b117748f2ac826541af6aaddd2c9f@trac.tools.ietf.org>
References: <066.7563cf099a48a0e6ca19394c0b608cbd@trac.tools.ietf.org>
X-Trac-Ticket-ID: 78
In-Reply-To: <066.7563cf099a48a0e6ca19394c0b608cbd@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/yy9XViNmRbkXxKh3lZnWpDdTtJc
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #78 (draft-ietf-dime-ovli): Remove section 5.2
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:59:45 -0000

#78: Remove section 5.2

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Removed section 5.2 as suggested above.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/78#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 02:01:51 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 261781A7006 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:01:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CS8-Y3fIrglH for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:01:49 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1F6351A7002 for <dime@ietf.org>; Mon, 20 Oct 2014 02:01:49 -0700 (PDT)
Received: from localhost ([::1]:36006 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8qY-0004oG-NK; Mon, 20 Oct 2014 02:01:46 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 09:01:46 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/79#comment:1
Message-ID: <081.1d2a377c7503993893beb0e6473d2334@trac.tools.ietf.org>
References: <066.baf6a379d5a23d4c1fc75604089389cd@trac.tools.ietf.org>
X-Trac-Ticket-ID: 79
In-Reply-To: <066.baf6a379d5a23d4c1fc75604089389cd@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/JrtRmKVWjSP9y3BmZQ4JwLv4R5w
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #79 (draft-ietf-dime-ovli): Section 5.4 - remove editor's note
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:01:50 -0000

#79: Section 5.4 - remove editor's note

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Removed editor's note as suggested above.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/79#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 02:03:36 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A1B151A7008 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:03:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Sk2CTttZlOnN for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:03:31 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 72D791A7003 for <dime@ietf.org>; Mon, 20 Oct 2014 02:03:31 -0700 (PDT)
Received: from localhost ([::1]:36096 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8sC-0005F4-Qt; Mon, 20 Oct 2014 02:03:28 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 09:03:28 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/81#comment:1
Message-ID: <081.fac57d2cd2056a64f752ffa238a3f92b@trac.tools.ietf.org>
References: <066.50e52056ddaf429706618e24a3ab2a3e@trac.tools.ietf.org>
X-Trac-Ticket-ID: 81
In-Reply-To: <066.50e52056ddaf429706618e24a3ab2a3e@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/g5dqU1wd8bPk-jHl_gri8wp1KJE
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #81 (draft-ietf-dime-ovli): 6.3.  OC-OLR AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:03:35 -0000

#81: 6.3.  OC-OLR AVP

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Agreed to leave the wording as is but to remove the editor's note.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/81#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 02:04:47 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EB2081A700A for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:04:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id K_ZtxmMl99Dr for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:04:44 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 816FE1A7003 for <dime@ietf.org>; Mon, 20 Oct 2014 02:04:44 -0700 (PDT)
Received: from localhost ([::1]:36163 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg8tN-0005Pn-Pz; Mon, 20 Oct 2014 02:04:41 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 09:04:41 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/84#comment:1
Message-ID: <081.417e1352704fb6e822a57790474b33fa@trac.tools.ietf.org>
References: <066.28524b7f3851b1ca821a52ca53aabef6@trac.tools.ietf.org>
X-Trac-Ticket-ID: 84
In-Reply-To: <066.28524b7f3851b1ca821a52ca53aabef6@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/8k7T-r3hQzKab3fKmi_t8xebi7o
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #84 (draft-ietf-dime-ovli): 6.6. OC-Report-Type AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:04:46 -0000

#84: 6.6.  OC-Report-Type AVP

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Agreed to remove the wording on default value as this is a required AVP.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/84#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 02:25:04 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1BCD01A7013 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:25:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jw2iLSfjK4uT for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:25:00 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9DC901A700C for <dime@ietf.org>; Mon, 20 Oct 2014 02:25:00 -0700 (PDT)
Received: from localhost ([::1]:37643 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg9Cx-00057B-Q2; Mon, 20 Oct 2014 02:24:55 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 09:24:55 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/74#comment:1
Message-ID: <081.1378161712de4393ca7bf67e4f09af71@trac.tools.ietf.org>
References: <066.528fadde671b27f69242e310aaface81@trac.tools.ietf.org>
X-Trac-Ticket-ID: 74
In-Reply-To: <066.528fadde671b27f69242e310aaface81@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/x1AV0zqMzpcKDm_wbKsZn2ZNxLU
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #74 (draft-ietf-dime-ovli): Move section 3.7. Considerations for Applications Integrating the DOIC Solution to Appendix
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:25:02 -0000

#74: Move section 3.7. Considerations for Applications Integrating the DOIC
Solution to Appendix

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 The title is mistaken, it should be section 3.6.

 Moved this section to an appendix.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  enhancement              |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/74#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 02:39:53 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CE5E11A7020 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:39:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id At7CyI1J1rmn for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:39:50 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8BC6E1A009E for <dime@ietf.org>; Mon, 20 Oct 2014 02:39:50 -0700 (PDT)
Received: from localhost ([::1]:38153 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1Xg9RK-0004rQ-DA; Mon, 20 Oct 2014 02:39:46 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 09:39:46 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/70#comment:1
Message-ID: <090.7188ac2e015fd665b34e407bdf3fe943@trac.tools.ietf.org>
References: <075.932a395897d769fbc9cf22116adcb797@trac.tools.ietf.org>
X-Trac-Ticket-ID: 70
In-Reply-To: <075.932a395897d769fbc9cf22116adcb797@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Ut70FDyChWiHg2LcPWboNub5yIs
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #70 (draft-ietf-dime-ovli): Appendix B - Example
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:39:52 -0000

#70: Appendix B - Example

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Agreed to remove the examples section and references to it.

 Also agreed to add wording that a reporting node must only send report
 types that it knows the reacting node supports.  This resulted in the
 following wording in section 4.2.3:

    A reporting node MUST only send overload reports of a type advertised
    as supported by the reacting node.

       Note that a reacting node advertises support for the host and
       realm report types by including the OC-Supported-Features AVP in
       the request.  Support for other report types must be explicitly
       indicated by a new feature bit in the OC-Feature-Vector AVP.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/70#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 03:49:36 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9140A1A802C for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 03:49:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nK3DJCTvSnlq for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 03:49:34 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 77F571A8028 for <dime@ietf.org>; Mon, 20 Oct 2014 03:49:34 -0700 (PDT)
Received: from [64.31.33.196] (port=51256 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgAWp-0000v4-KK for dime@ietf.org; Mon, 20 Oct 2014 03:49:32 -0700
Message-ID: <5444E8B9.8090002@usdonovans.com>
Date: Mon, 20 Oct 2014 12:49:29 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/SxkDIL5G4soRfSPMcq3X7dR2aog
Subject: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 10:49:35 -0000

We came to the following agreements on error responses:

- Servers rejecting a Diameter request due to an overload condition 
should send a 3002 DIAMETER_TOO_BUSY error response.

- Agents rejecting a Diameter request due to an overload condition 
should send a 5012 DIAMETER_UNABLE_TO_COMPLY.

I propose that we generalize this to the following:

- Reporting nodes rejecting a Diameter request due to an overload 
condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.

- Reacting nodes rejecting a Diameter request due to an overload 
condition SHOULD send a UNABLE-TO-COMPLY.

This would mean that an agent acting as a reporting node (i.e.; server 
doesn't support DOIC or agent is acting as a server front end) would 
sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; 
a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.

I propose adding this to a new section 4.2.4.  The existing 4.2.4 on 
agent behavior will be deleted.

I will hold off making this change until tomorrow (Tuesday morning).

Regards,

Steve


From nobody Mon Oct 20 04:12:06 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D6A901A8034 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:12:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5DpMiXDLnVy9 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:12:02 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 75B2C1A7035 for <dime@ietf.org>; Mon, 20 Oct 2014 04:12:02 -0700 (PDT)
Received: from localhost ([::1]:42490 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgAsX-0001dg-MV; Mon, 20 Oct 2014 04:11:57 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 11:11:57 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/72#comment:1
Message-ID: <090.79cda897b8f03e5e7b73357b5d1b2347@trac.tools.ietf.org>
References: <075.67c19030c021c5f440170dd8f3f3c9a8@trac.tools.ietf.org>
X-Trac-Ticket-ID: 72
In-Reply-To: <075.67c19030c021c5f440170dd8f3f3c9a8@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/9kQP45Q8bKq_mJF65KNWT3ubsAk
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #72 (draft-ietf-dime-ovli): Reporting Node Behaviour when OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:12:04 -0000

#72: Reporting Node Behaviour when OC-OLR is not received

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Added the following to section 4.2.3 per previous email discussions:

    A reporting node MAY choose to not send an overload report to a
    reacting node if it can guarantee that this overload report is
    already active in the reacting node.

       Note - In some cases (e.g. when there are one or multiple agents
       in the path between reporting and reacting nodes, or when overload
       reports are discarded by reacting nodes) the reporting node may
       not be able to guarantee that the reacting node has received the
       report.

 Also changed wording in the loss section reporting node behavior section
 to refer to section 4.2.3.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  enhancement              |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/72#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 04:20:25 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 079F61A6FE8 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:25:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hEcFvoMsikw0 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 01:25:01 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5D7FE1A6FD1 for <dime@ietf.org>; Mon, 20 Oct 2014 01:25:01 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:50384 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xg8Gx-0000HR-9A for dime@ietf.org; Mon, 20 Oct 2014 01:25:00 -0700
Message-ID: <5444C6D9.80102@usdonovans.com>
Date: Mon, 20 Oct 2014 10:24:57 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------050606030204050906070403"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/K1_a3yL-PsBKulTwJ1anM9BmBlg
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:19:58 -0700
Subject: [Dime] Resolved issue 68
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 08:25:05 -0000
X-List-Received-Date: Mon, 20 Oct 2014 08:25:05 -0000

This is a multi-part message in MIME format.
--------------050606030204050906070403
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've updated -04 in github with the resolution to issue #68.

The diff is attached.

Regards,

Steve

--------------050606030204050906070403
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 48</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 48</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</td><td> </td><td class="right">     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.4.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     5.4.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="delete">9</span></td><td> </td><td class="rblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="delete">30</span></td><td> </td><td class="rblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="insert">29</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">35</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  3<span class="delete">7</span></td><td> </td><td class="rblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  3<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix A.  Issues left for future specifications  . . . . . . .  37</td><td> </td><td class="right">   Appendix A.  Issues left for future specifications  . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="delete">38</span></td><td> </td><td class="rblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">38</span></td><td> </td><td class="rblock">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td> </td><td class="right">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">           Host routed requests  . . . . . . . . . . . . . . . . . .  3<span class="delete">8</span></td><td> </td><td class="rblock">           Host routed requests  . . . . . . . . . . . . . . . . . .  3<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41</td><td> </td><td class="right">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 22, line 21</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 22, line 21</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.3.  Reporting Node Behavior</td><td> </td><td class="right">4.2.3.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node is a Diameter node inserting an OC-OLR AVP in a</td><td> </td><td class="right">   A reporting node is a Diameter node inserting an OC-OLR AVP in a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter message in order to inform a reacting node about an overload</td><td> </td><td class="right">   Diameter message in order to inform a reacting node about an overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   condition and request Diameter traffic abatement.</td><td> </td><td class="right">   condition and request Diameter traffic abatement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The operation on the reporting node is straight forward.  The</td><td> </td><td class="right">   The operation on the reporting node is straight forward.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node learns the capabilities of the reacting node when it</td><td> </td><td class="right">   reporting node learns the capabilities of the reacting node when it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receives the OC-Supported-Features AVP as part of any Diameter</td><td> </td><td class="right">   receives the OC-Supported-Features AVP as part of any Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   request message.  <span class="delete">If the reporting node shares at least one common</span></td><td> </td><td class="rblock">   request message.  <span class="insert">Since</span> the <span class="insert">loss abatement algorithm Section 5 is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   feature with the reacting node, then</span> the DOIC can be enabled between</td><td> </td><td class="rblock"><span class="insert">   mandatory to implement</span> DOIC can <span class="insert">always</span> be enabled between these DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   these DOIC nodes See Section 4.1 for further discussion on the</td><td> </td><td class="rblock">   nodes See Section 4.1 for further discussion on the capability and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   capability and feature announcement.</td><td> </td><td class="rblock">   feature announcement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a traffic reduction is required due to an overload condition and</td><td> </td><td class="right">   When a traffic reduction is required due to an overload condition and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload control solution is supported by the sender of the</td><td> </td><td class="right">   the overload control solution is supported by the sender of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter request, the reporting node MUST include an OC-Supported-</td><td> </td><td class="right">   Diameter request, the reporting node MUST include an OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td> </td><td class="right">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td> </td><td class="right">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td> </td><td class="right">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td> </td><td class="right">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the request sender.</td><td> </td><td class="right">   the request sender.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 27, line 36</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 27, line 36</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node.  For example, the reacting node may indicate which</td><td> </td><td class="right">   reporting node.  For example, the reacting node may indicate which</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (future defined) traffic abatement algorithms it supports in addition</td><td> </td><td class="right">   (future defined) traffic abatement algorithms it supports in addition</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to the default.</td><td> </td><td class="right">   to the default.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   During the message exchange the DOIC nodes express their common set</td><td> </td><td class="right">   During the message exchange the DOIC nodes express their common set</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   of supported capabilities.  The reacting node includes the OC-</td><td> </td><td class="right">   of supported capabilities.  The reacting node includes the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP that announces what it supports.  The</td><td> </td><td class="right">   Supported-Features AVP that announces what it supports.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node that sends the answer also includes the OC-Supported-</td><td> </td><td class="right">   reporting node that sends the answer also includes the OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP that describes the capabilities it supports.  The set of</td><td> </td><td class="right">   Features AVP that describes the capabilities it supports.  The set of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   capabilities advertised by the reporting node depends on local</td><td> </td><td class="right">   capabilities advertised by the reporting node depends on local</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   policies.  <span class="delete">At least one of</span> the <span class="delete">announced capabilities MUST match.  If</span></td><td> </td><td class="rblock">   policies.  <span class="insert">Since</span> the <span class="insert">loss abatement algorithm Section 5</span> is <span class="insert">mandatory</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   there</span> is <span class="delete">no single matching capability the reacting node MUST act as</span></td><td> </td><td class="rblock"><span class="insert">   to</span> implement DOIC <span class="insert">can</span> always be <span class="insert">enabled between these</span> DOIC <span class="insert">nodes.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   if it does not</span> implement DOIC <span class="delete">and cease inserting any DOIC related</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   AVPs into any Diameter messages with this specific reacting node.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Editor's note: The last sentence conflicts with the last sentence</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      two paragraphs up.  In reality, there will</span> always be <span class="delete">at least one</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      matching capability as all nodes supporting</span> DOIC <span class="delete">must support the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      loss algorithm.  Suggest removing the last sentence.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.2.  OC-Feature-Vector AVP</td><td> </td><td class="right">6.2.  OC-Feature-Vector AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and</td><td> </td><td class="right">   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   contains a 64 bit flags field of announced capabilities of a DOIC</td><td> </td><td class="right">   contains a 64 bit flags field of announced capabilities of a DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node.  The value of zero (0) is reserved.</td><td> </td><td class="right">   node.  The value of zero (0) is reserved.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following capabilities are defined in this document:</td><td> </td><td class="right">   The following capabilities are defined in this document:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td> </td><td class="right">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 9 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>24 lines changed or deleted</i></th><th><i> </i></th><th><i>17 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . . 
  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25\n     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.4.  Reacting Node Behav
 ior  . . . . . . . . . . . . . . . . .  25\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32\n   8.  IANA Considerations . . . . . . . . . . . . .
  . . . . . . . .  32\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  32\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  36\n   Appendix A.  Issues left for future specifications  . . . . . . .  37\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37\n     A.2.  Ag
 ent Overload  . . . . . . . . . . . . . . . . . . . . .  37\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  37\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in thi
 s specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n 
      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload c
 ontrol maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting node
 s.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\
 n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each applicat
 ion and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section
  6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of real
 m is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their
  use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by 
 the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   so
 lution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the react
 ing nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported
  by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in
  extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indica
 te an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining
  the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communic
 ate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of
  the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also 
 have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\
 n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base
  protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   
 types of applications, session-less and session-based applications.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n 
      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of appli
 cation.  Section 3.6.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend
  upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      
 more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the 
 Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\
 n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This se
 quencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling dec
 isions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo
 -session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The d
 efault handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or
  handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the lo
 ss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken by the reacting node except when the answer message also has\n      an overload report.  This behavior is described in Section 4.2 and\n      Section 5.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Feature
 s AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment
  scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   
 (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  
 Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for
  reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e
 . when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an an
 swer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement 
 based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on t
 he reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Di
 ameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   over
 load control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the
  validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A repo
 rting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   
 Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control soluti
 on can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-b
 it in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\
 n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   over
 load abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement
  should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Use of OC-Reduction-Percentage AVP\n\n   A reporting node using the loss algorithm must use the OC-Reduction-\n   Percentage AVP (Section 6.7 to indicated the desired percentage of\n   traffic reduction.)\n\n      Editor\'s note: The above duplicates what is in the OC-Reduction-\n      Percentage AVP section can probably be removed.\n\n5.3.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overlo
 ad condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.4.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message whe
 re the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload conditi
 on of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n      Editor\'s note: Need to add additional guidance to slowly increase\n      the rate of traffic sent to avoid a sudden spike in traffic, as\n      the spike in traffic could result in oscillation of the need for\n      overload control.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      conditi
 on thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mech
 anisms works\n   on that application.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see
  Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vect
 or AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AV
 P within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequen
 ce number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n      Editor\'s note: Need to specify what happens when two reports of\n      the same type are received.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n\n\n\nKorhonen, et al.         Expires April 23,
  2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the
 \n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove a
 n overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matc
 hes\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diamet
 er\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The default value of the OC-Report-Type AVP is 0 (i.e. the host\n   report).\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by
  the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled,
  i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped
      _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\
 n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Code
 s registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) a
 ttack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or S
 CTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an ov
 erload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "
 example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can ca
 use a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanis
 m, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft            
         DOIC                      October 2014\n\n\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUS
 T not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end sec
 urity mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Mart
 in, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Cl
 arifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered wit
 h IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n    
   routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the sam
 e\n   server.  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement
  for requests that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 han
 dle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm
 )       _\n           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n           _         _         _         _        
  _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _
          _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client thro
 ttles DH:S1, DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded b
 y the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is probably different than the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 40]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests wit
 h\n       Destination-Host:S3.)\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 42]\n', 'filename1': '\
 n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED
 ", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document i
 s subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  .
  . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n      
  4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25\n     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.4.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25\n   6.  Attribute Value Pairs . . . . . . 
 . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  27\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  29\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  30\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . 
 . . .  32\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  33\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  33\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  35\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  35\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  36\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  37\n   Appendix A.  Issues left for future specifications  . . . . . . .  37\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37\n     A.3.  DIAMETER_TOO_
 BUSY clarifications  . . . . . . . . . . . .  38\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  38\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that s
 upport the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and ag
 ents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)
 \n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed 
 to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  R
 ather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abate
 ment according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This
  document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-
 id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload
  control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OL
 R AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and 
 is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Di
 ameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes
  an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism mu
 st also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report. 
  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination i
 s\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt
  of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines
  when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional
  information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^
 -----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indicati
 on\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n\n\n\n\nKorhonen
 , et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined
  between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Section 3.6.3 discusses considerations for handling\n   various request type
 s when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the ent
 ity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is becaus
 e more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to rejec
 t mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the 
 case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MA
 R and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests repre
 sent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take
  into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally
  when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all me
 ssages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it d
 oes not require action to be\n      taken by the reacting node except when the answer message also has\n      an overload report.  This behavior is described in Section 4.2 and\n      Section 5.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n
    answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on lo
 cal reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting N
 odes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  
 Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire befor
 e any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n 
   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n
    change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload 
 condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the
  reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destinat
 ion-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the
  value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration tim
 es out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in or
 der to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  If the reporting node shares at least one common\n   feature with the reacting node, then the DOIC can be enabled between\n   these DOIC nodes See Section 4.1 for further discussion on the\n   capability and feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   a
 pply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new r
 eport types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in 
 the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n
    with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a
  percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be ta
 ken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Use of OC-Reduction-Percentage AVP\n\n   A reporting node using the loss algorithm must use the OC-Reduction-\n   Percentage AVP (Section 6.7 to indicated the desired percentage of\n   traffic reduction.)\n\n      Editor\'s note: The above duplicates what is in the OC-Reduction-\n      Percentage AVP section can probably be removed.\n\n5.3.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting no
 de that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.4.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the lo
 ss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rat
 e decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n      Editor\'s note: Need to add additional guidance to slowly increase\n      the rate of traffic sent to avoid a sudden spike in traffic, as\n      the spike in traffic could result in oscillation of the need for\n      overload control.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 
 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n\n\n\n\n\nKorhonen, et al.      
    Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates th
 at only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  At least one of the announced capabilities MUST match.  If\n   there is no single matching capability the reacting node MUST act as\n   if it does not implement DOIC and cease inserting any DOIC related\n   AVPs into any Diam
 eter messages with this specific reacting node.\n\n      Editor\'s note: The last sentence conflicts with the last sentence\n      two paragraphs up.  In reality, there will always be at least one\n      matching capability as all nodes supporting DOIC must support the\n      loss algorithm.  Suggest removing the last sentence.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP co
 de TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n       
           [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n      Editor\'s note: Need to specify what happens when two reports of\n      the same type are received.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Dr
 aft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned
 32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a
  timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions ar
 e true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The De
 stination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n\n\n\n\nKorhonen, et al.      
    Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The default value of the OC-Report-Type AVP is 0 (i.e. the host\n   report).\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) 
 algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October
  2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      
 +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applicatio
 ns, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\
 n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity pro
 tection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInter
 net-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a
  response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use t
 he information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Com
 pliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   down
 stream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload report
 s\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to 
 Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shis
 hufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Ts
 chofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover al
 l\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no 
 information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively lett
 ing an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server.  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an 
 overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for requests that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   co
 nsidered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__   
       _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _     
     _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n    
        _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _  
        _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1, DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n\n\nKorhonen, et al.         Expires April 23, 2015    
             [Page 40]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.
 \n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is probably different than the\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent
  generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Destination-Host:S3.)\n\nAuthors\' Addresses\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United Stat
 es\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 42]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------050606030204050906070403--


From nobody Mon Oct 20 04:20:27 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 528D91A700A for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:08:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pTf0DjAgQmGr for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:08:27 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 33C0E1A1A25 for <dime@ietf.org>; Mon, 20 Oct 2014 02:08:27 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:50583 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xg8wy-0008Dy-NM for dime@ietf.org; Mon, 20 Oct 2014 02:08:26 -0700
Message-ID: <5444D107.1080902@usdonovans.com>
Date: Mon, 20 Oct 2014 11:08:23 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------010303030700060706060806"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/G7mohexTFIV8WEqlYGabGwGOGv8
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:19:58 -0700
Subject: [Dime] Resolution to 76 78 79 81 84 checked in
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:08:33 -0000

This is a multi-part message in MIME format.
--------------010303030700060706060806
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've updated github for the above issues.

The diff is attached.

Regards,

Steve

--------------010303030700060706060806
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 19</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 19</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the Trust Legal Provisions and are provided without warranty as</td><td> </td><td class="right">   the Trust Legal Provisions and are provided without warranty as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   described in the Simplified BSD License.</td><td> </td><td class="right">   described in the Simplified BSD License.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td> </td><td class="right">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td> </td><td class="right">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   <span class="delete">9</span></td><td> </td><td class="rblock">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   <span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.6.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">     3.6.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       3.6.1.  Application Classification  . . . . . . . . . . . . .  11</td><td> </td><td class="right">       3.6.1.  Application Classification  . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       3.6.2.  Application Type Overload Implications  . . . . . . .  12</td><td> </td><td class="right">       3.6.2.  Application Type Overload Implications  . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       3.6.3.  Request Transaction Classification  . . . . . . . . .  14</td><td> </td><td class="right">       3.6.3.  Request Transaction Classification  . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14</td><td> </td><td class="right">       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 2, line 41</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 2, line 41</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  <span class="delete">Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     5.3.</span>  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="rblock">     <span class="insert">5.3.</span>  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">5.4.</span>  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  2<span class="delete">7</span></td><td> </td><td class="rblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  2<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">8</span></td><td> </td><td class="rblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="delete">9</span></td><td> </td><td class="rblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  3<span class="delete">1</span></td><td> </td><td class="rblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  3<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="delete">34</span></td><td> </td><td class="rblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">35</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  <span class="insert">35</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  36</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  37</td><td> </td><td class="right">   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td> </td><td class="right">     B.1.  Mix of Destination-Realm routed requests and Destination-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">           Host routed requests  . . . . . . . . . . . . . . . . . .  37</td><td> </td><td class="right">           Host routed requests  . . . . . . . . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  4<span class="delete">1</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  4<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 19, line 8</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 19, line 8</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node maintains per supported Diameter application and per</td><td> </td><td class="right">   A reporting node maintains per supported Diameter application and per</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported (and eventually selected) Abatement Algorithm an Overload</td><td> </td><td class="right">   supported (and eventually selected) Abatement Algorithm an Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control State.</td><td> </td><td class="right">   Control State.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An Overload Control State may be identified by the pair of</td><td> </td><td class="right">   An Overload Control State may be identified by the pair of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Application-Id and supported Abatement Algorithm.</td><td> </td><td class="right">   Application-Id and supported Abatement Algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The Overload Control State for a given pair of Application and</td><td> </td><td class="right">   The Overload Control State for a given pair of Application and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Abatement Algorithm could include the information:</td><td> </td><td class="right">   Abatement Algorithm could include the information:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">o  Report type</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Sequence number</td><td> </td><td class="right">   o  Sequence number</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Validity Duration and Expiry Time</td><td> </td><td class="right">   o  Validity Duration and Expiry Time</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Algorithm specific input data (e.g.  Reduction Percentage for</td><td> </td><td class="right">   o  Algorithm specific input data (e.g.  Reduction Percentage for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Loss)</td><td> </td><td class="right">      Loss)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Control States for reporting nodes containing a validity</td><td> </td><td class="right">   Overload Control States for reporting nodes containing a validity</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   duration of 0 sec. should not expire before any previously sent</td><td> </td><td class="right">   duration of 0 sec. should not expire before any previously sent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (stale) OLR has timed out at any reacting node.</td><td> </td><td class="right">   (stale) OLR has timed out at any reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 25, line 5</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 25, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  The reacting node determines that an active overload report</td><td> </td><td class="right">   3.  The reacting node determines that an active overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       applies to the request.</td><td> </td><td class="right">       applies to the request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  The reacting node determines if abatement should be applied to</td><td> </td><td class="right">   4.  The reacting node determines if abatement should be applied to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       the request.  One approach that could be taken would be to select</td><td> </td><td class="right">       the request.  One approach that could be taken would be to select</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       a random number between 1 and 100.  If the random number is less</td><td> </td><td class="right">       a random number between 1 and 100.  If the random number is less</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       than the indicated reduction percentage then the request is given</td><td> </td><td class="right">       than the indicated reduction percentage then the request is given</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       abatement treatment, otherwise the request is given normal</td><td> </td><td class="right">       abatement treatment, otherwise the request is given normal</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       routing treatment.</td><td> </td><td class="right">       routing treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.2.  <span class="delete">Use of OC-Reduction-Percentage AVP</span></td><td> </td><td class="rblock">5.2.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   A reporting node using the loss algorithm must use the OC-Reduction-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Percentage AVP (Section 6.7 to indicated the desired percentage of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   traffic reduction.)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Editor's note: The above duplicates what is in the OC-Reduction-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Percentage AVP section can probably be removed.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">5.3.</span>  Reporting Node Behavior</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The method a reporting nodes uses to determine the amount of traffic</td><td> </td><td class="right">   The method a reporting nodes uses to determine the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reduction required to address an overload condition is an</td><td> </td><td class="right">   reduction required to address an overload condition is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implementation decision.</td><td> </td><td class="right">   implementation decision.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a reporting node that has selected the loss abatement algorithm</td><td> </td><td class="right">   When a reporting node that has selected the loss abatement algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   determines the need to request a traffic reduction it must include an</td><td> </td><td class="right">   determines the need to request a traffic reduction it must include an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP in all response messages.</td><td> </td><td class="right">   OC-OLR AVP in all response messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node must indicate a percentage reduction in the OC-</td><td> </td><td class="right">   The reporting node must indicate a percentage reduction in the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 25, line 36</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 25, line 27</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node may change the reduction percentage in subsequent</td><td> </td><td class="right">   The reporting node may change the reduction percentage in subsequent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports.  When doing so the reporting node must conform to</td><td> </td><td class="right">   overload reports.  When doing so the reporting node must conform to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report handing specified in Section 4.2.3.</td><td> </td><td class="right">   overload report handing specified in Section 4.2.3.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When the reporting node determines it no longer needs a reduction in</td><td> </td><td class="right">   When the reporting node determines it no longer needs a reduction in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic the reporting node should send an overload report indicating</td><td> </td><td class="right">   traffic the reporting node should send an overload report indicating</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload report is no longer valid, as specified in</td><td> </td><td class="right">   the overload report is no longer valid, as specified in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 4.2.3.</td><td> </td><td class="right">   Section 4.2.3.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">5.<span class="delete">4</span>.  Reacting Node Behavior</td><td> </td><td class="rblock">5.<span class="insert">3</span>.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The method a reacting node uses to determine which request messages</td><td> </td><td class="right">   The method a reacting node uses to determine which request messages</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   are given abatement treatment is an implementation decision.</td><td> </td><td class="right">   are given abatement treatment is an implementation decision.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When receiving an OC-OLR in an answer message where the algorithm</td><td> </td><td class="right">   When receiving an OC-OLR in an answer message where the algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicated in the OC-Supported-Features AVP is the loss algorithm, the</td><td> </td><td class="right">   indicated in the OC-Supported-Features AVP is the loss algorithm, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reacting node must attempt to apply abatement treatment to the</td><td> </td><td class="right">   reacting node must attempt to apply abatement treatment to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requested percentage of request messages sent.</td><td> </td><td class="right">   requested percentage of request messages sent.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note: the loss algorithm is a stateless algorithm.  As a result,</td><td> </td><td class="right">      Note: the loss algorithm is a stateless algorithm.  As a result,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 26, line 14</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 26, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If reacting node comes out of the 100 percent traffic reduction as a</td><td> </td><td class="right">   If reacting node comes out of the 100 percent traffic reduction as a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   result of the overload report timing out, the following concerns are</td><td> </td><td class="right">   result of the overload report timing out, the following concerns are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   RECOMMENDED to be applied.  The reacting node sending the traffic</td><td> </td><td class="right">   RECOMMENDED to be applied.  The reacting node sending the traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   should be conservative and, for example, first send "probe" messages</td><td> </td><td class="right">   should be conservative and, for example, first send "probe" messages</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to learn the overload condition of the overloaded node before</td><td> </td><td class="right">   to learn the overload condition of the overloaded node before</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   converging to any traffic amount/rate decided by the sender.  Similar</td><td> </td><td class="right">   converging to any traffic amount/rate decided by the sender.  Similar</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   concerns apply in all cases when the overload report times out unless</td><td> </td><td class="right">   concerns apply in all cases when the overload report times out unless</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the previous overload report stated 0 percent reduction.</td><td> </td><td class="right">   the previous overload report stated 0 percent reduction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Editor's note: Need to add additional guidance to slowly increase</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the rate of traffic sent to avoid a sudden spike in traffic, as</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the spike in traffic could result in oscillation of the need for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      overload control.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the reacting node does not receive a an OLR in messages sent to</td><td> </td><td class="right">   If the reacting node does not receive a an OLR in messages sent to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the formally overloaded node then the reacting node should slowly</td><td> </td><td class="right">   the formally overloaded node then the reacting node should slowly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   increase the rate of traffic sent to the overloaded node.</td><td> </td><td class="right">   increase the rate of traffic sent to the overloaded node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   It is suggested that the reacting node decrease the amount of traffic</td><td> </td><td class="right">   It is suggested that the reacting node decrease the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   given abatement treatment by 20% each second until the reduction is</td><td> </td><td class="right">   given abatement treatment by 20% each second until the reduction is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   completely removed and no traffic is given abatement treatment.</td><td> </td><td class="right">   completely removed and no traffic is given abatement treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The goal of this behavior is to reduce the probability of overload</td><td> </td><td class="right">      The goal of this behavior is to reduce the probability of overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      condition thrashing where an immediate transition from 100%</td><td> </td><td class="right">      condition thrashing where an immediate transition from 100%</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 28, line 40</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 28, line 25</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   updated after reception of subsequent OC-OLR AVPs with the same</td><td> </td><td class="right">   updated after reception of subsequent OC-OLR AVPs with the same</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number.  The default value for the OC-Validity-Duration AVP</td><td> </td><td class="right">   sequence number.  The default value for the OC-Validity-Duration AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is</td><td> </td><td class="right">   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   not present in the OC-OLR AVP, the default value applies.</td><td> </td><td class="right">   not present in the OC-OLR AVP, the default value applies.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td> </td><td class="right">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td> </td><td class="right">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with unknown values SHOULD be silently discarded and the event SHOULD</td><td> </td><td class="right">   with unknown values SHOULD be silently discarded and the event SHOULD</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be logged.</td><td> </td><td class="right">   be logged.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Editor's note: Need to specify what happens when two reports of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the same type are received.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.4.  OC-Sequence-Number AVP</td><td> </td><td class="right">6.4.  OC-Sequence-Number AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td> </td><td class="right">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Its usage in the context of overload control is described in</td><td> </td><td class="right">   Its usage in the context of overload control is described in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 4.2.</td><td> </td><td class="right">   Section 4.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td> </td><td class="right">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be used as a non-volatile increasing counter between two DOIC nodes.</td><td> </td><td class="right">   be used as a non-volatile increasing counter between two DOIC nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The sequence number is only required to be unique between two DOIC</td><td> </td><td class="right">   The sequence number is only required to be unique between two DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   nodes.  Sequence numbers are treated in a uni-directional manner,</td><td> </td><td class="right">   nodes.  Sequence numbers are treated in a uni-directional manner,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 30, line 43</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 30, line 24</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Editor's note: There is still an open issue on the definition of</td><td> </td><td class="right">      Editor's note: There is still an open issue on the definition of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Realm reports and whether what report types should be supported.</td><td> </td><td class="right">      Realm reports and whether what report types should be supported.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      There is consensus that host reports should be supported.  There</td><td> </td><td class="right">      There is consensus that host reports should be supported.  There</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      is discussion on Realm reports and Realm-Routed-Request reports.</td><td> </td><td class="right">      is discussion on Realm reports and Realm-Routed-Request reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The above definition applies to Realm-Routed-Request reports where</td><td> </td><td class="right">      The above definition applies to Realm-Routed-Request reports where</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Realm reports are defined to apply to all requests that match the</td><td> </td><td class="right">      Realm reports are defined to apply to all requests that match the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm, independent of the presence, absence or value of the</td><td> </td><td class="right">      realm, independent of the presence, absence or value of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Destination-Host AVP.</td><td> </td><td class="right">      Destination-Host AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The default value of the OC-Report-Type AVP is 0 (i.e. the host</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   report).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td> </td><td class="right">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   where a reacting node needs to apply different overload treatments</td><td> </td><td class="right">   where a reacting node needs to apply different overload treatments</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for different "types" of overload.  For example, the reacting node(s)</td><td> </td><td class="right">   for different "types" of overload.  For example, the reacting node(s)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   might need to throttle differently requests sent to a specific server</td><td> </td><td class="right">   might need to throttle differently requests sent to a specific server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (identified by the Destination-Host AVP in the request) and requests</td><td> </td><td class="right">   (identified by the Destination-Host AVP in the request) and requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that can be handled by any server in a realm.  The example in</td><td> </td><td class="right">   that can be handled by any server in a realm.  The example in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.1 illustrates this usage.</td><td> </td><td class="right">   Appendix B.1 illustrates this usage.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.7.  OC-Reduction-Percentage AVP</td><td> </td><td class="right">6.7.  OC-Reduction-Percentage AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 17 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>41 lines changed or deleted</i></th><th><i> </i></th><th><i>23 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . . 
  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25\n   6.  Attribute Value Pairs .
  . . . . . . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  26\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  27\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  28\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  30\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  31\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  31\n     8.1.  AVP codes . . . . . . . . . . . . . . . .
  . . . . . . . .  31\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  32\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  32\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  33\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  35\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  35\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  36\n   Appendix A.  Issues left for future specifications  . . . . . . .  36\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  36\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  36\n     A.3.  DI
 AMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  37\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  40\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter n
 odes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients a
 nd agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report 
 (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   ne
 eded to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   informatio
 n.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload 
 abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   such behaviors.  Report types are extensible. 
  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the applica
 tion-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The ove
 rload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the 
 OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA)
  and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments whe
 re Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only inc
 ludes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechani
 sm must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n
 \nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n  
  implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of a
 n overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines 
 when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional 
 information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\
 n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for over
 load indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n\n\
 n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n
       defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Section 3.6.3 discusses considerations for handling\n   various
  request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indicati
 on to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      T
 his is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would de
 cide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notabl
 y\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.
   The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating r
 equests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requ
 ests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat
  them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensur
 e that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this docu
 ment and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that trans
 action.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n  
  The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maint
 ains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (a
 s received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previ
 ously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s
  note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\
 n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The
  reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   n
 ode learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP i
 s\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the O
 C-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the rea
 cting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a
  reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST 
 be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new fu
 nctionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP t
 hat are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specif
 ication, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in th
 e amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n   
     a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When 
 doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested per
 centage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded nod
 e.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the applicat
 ion and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   suppo
 rted by the DOIC node, in the form of a flag bits field in which\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n  
  Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whe
 ther a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n           
     * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP 
 MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP 
 is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Durati
 on AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the conne
 ction used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of th
 e received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, 
 the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe
  load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n     
  +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vect
 or      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\nKorhonen, et al.         Ex
 pires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is poten
 tially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse on
 e or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker
  might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a compet
 itor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diam
 eter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   con
 trol mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modi
 fy\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not auth
 orized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such 
 modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n 
              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006
 ,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the requ
 ired IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommen
 ded to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server.  Therefore it would send the i
 nitial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for requests that do not contain Destinatio
 n-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage v
 alues.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n           _         _--------__ 
         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n_\nInternet-Dr
 aft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _
          _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1, DH:S2, and DR:realm\n          
  _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportTy
 pe is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is
  probably different than the\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Destination-Host:S3.)\n\nAuthors\' A
 ddresses\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 40]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft     
                                              Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC211
 9].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKor
 honen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . .
  . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  .
  . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Use of OC-Reduction-Percentage AVP  . . . . . . . . . . .  25\n     5.3.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.4.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . 
 .  27\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  28\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  29\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  32\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  32\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  32\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32\n   9.  Security
  Considerations . . . . . . . . . . . . . . . . . . .  32\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  33\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  34\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  36\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  36\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  36\n   Appendix A.  Issues left for future specifications  . . . . . . .  37\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  37\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  37\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37\n   Appendix B.  Examples . . . . . . . . . . . . .
  . . . . . . . . .  37\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  41\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and fu
 ture Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable 
 of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an o
 ccurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on
  its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs i
 nto existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meanin
 g of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an ent
 ire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\
 n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of exist
 ing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n    
   overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggyback
 ing principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n\n\n\nKorh
 onen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\
 n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and 
 by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that 
 the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host
  report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted
  by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report a
 nd\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algor
 ithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Serve
 r A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication ca
 n be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                 
    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transaction
 s.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Section 3.6.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume t
 hat the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   S
 tateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur l
 ater in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the ses
 sion and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter appli
 cation sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session req
 uests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requ
 ests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of request
 s within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInt
 ernet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not
  include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is
 \n      described in Section 4.2 and Section 5.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Fea
 ture-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control 
 AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for ea
 ch Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Rep
 orting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with 
 other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes up
 date the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containin
 g an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containi
 ng the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer 
 message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different 
 handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload contro
 l state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") receive
 d in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node i
 s straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP val
 ues for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bi
 t is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\
 n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et
  al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   R
 eporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the requ
 est is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Use of OC-Reduction-Percentage AVP\n\n   A reporting node using the loss algorithm must use the OC-Reduction-\n   Percentage AVP (Section 6.7 to indicated the desired percentage of\n   traffic reduction.)\n\n      Editor\'s note: The above duplicates what is in the OC-Reduction-\n      Percentage AVP section can probably be removed.\n\n5.3.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response me
 ssages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.4.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the lo
 ss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent
  reduction.\n\n      Editor\'s note: Need to add additional guidance to slowly increase\n      the rate of traffic sent to avoid a sudden spike in traffic, as\n      the spike in traffic could result in oscillation of the need for\n      overload control.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes t
 he encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.1.  OC-Supported-Featu
 res AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its cap
 abilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities 
 are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message 
 header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter com
 mand were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n      Editor\'s note: Need to specify what happens when two reports of\n      the same type are received.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction 
 between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the defau
 lt value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated
 .  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the recei
 ved message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      Ther
 e is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The default value of the OC-Report-Type AVP is 0 (i.e. the host\n   report).\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n\n\nKorhonen, et al.         Expires April 23, 2015              
   [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abate
 ment.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n  
     _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the
  M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector"
  registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n\n\n\nKorhon
 en, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection
  of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least part
 ially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                   
    October 2014\n\n\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a Do
 S attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n 
   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requir
 ement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer 
 that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussi
 on to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n 
              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", 
 RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\
 n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  
 In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server.  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host 
 AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for requests that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If 
 the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportType and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go 
 to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OL
 R\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n          
  _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __---
 ---------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1, DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _  
        _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n       applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards 
 the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Reduction-Percentage.  This value is probably different than the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 40]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       cap
 acity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Destination-Host:S3.)\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Orac
 le\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 42]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------010303030700060706060806--


From nobody Mon Oct 20 04:20:28 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9EB4C1A7020 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:42:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.79
X-Spam-Level: **
X-Spam-Status: No, score=2.79 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, J_CHICKENPOX_25=0.6, J_CHICKENPOX_36=0.6, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YlxQGDIeHfAb for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 02:42:22 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 60EF81A7031 for <dime@ietf.org>; Mon, 20 Oct 2014 02:42:22 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:50660 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xg9Tn-0005b0-Kt for dime@ietf.org; Mon, 20 Oct 2014 02:42:21 -0700
Message-ID: <5444D8F9.9040906@usdonovans.com>
Date: Mon, 20 Oct 2014 11:42:17 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------000207010709030507070803"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/dDjUdhbgJkx3nb25qzuimuuMSNo
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:19:59 -0700
Subject: [Dime] Resolution to issues 70 and 74
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 09:42:29 -0000

This is a multi-part message in MIME format.
--------------000207010709030507070803
Content-Type: multipart/alternative;
 boundary="------------020401020408000100020202"


--------------020401020408000100020202
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have removed the examples section and moved the "Application 
Considerations" section to an appendix.

For issue 70 I also added the following wording to section 4.2.3:

    A reporting node MUST only send overload reports of a type advertised
    as supported by the reacting node.

       Note that a reacting node advertises support for the host and
       realm report types by including the OC-Supported-Features AVP in
       the request.  Support for other report types must be explicitly
       indicated by a new feature bit in the OC-Feature-Vector AVP.


The diff file is attached.

Regards,

Steve

--------------020401020408000100020202
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I have removed the examples section and moved the "Application
    Considerations" section to an appendix.<br>
    <br>
    For issue 70 I also added the following wording to section 4.2.3:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   A reporting node MUST only send overload reports of a type advertised
   as supported by the reacting node.

      Note that a reacting node advertises support for the host and
      realm report types by including the OC-Supported-Features AVP in
      the request.  Support for other report types must be explicitly
      indicated by a new feature bit in the OC-Feature-Vector AVP.


</pre>
    The diff file is attached.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
  </body>
</html>

--------------020401020408000100020202--

--------------000207010709030507070803
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 22</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 22</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td> </td><td class="right">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td> </td><td class="right">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">3.6.  Considerations for Applications Integrating the DOIC</span></td><td> </td><td class="rblock">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11</span></td><td> </td><td class="rblock">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.1.  Application Classification  . . . . . . . . . . . . .  11</span></td><td> </td><td class="rblock">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="insert">12</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.2.  Application Type Overload Implications  . . . . . . .  12</span></td><td> </td><td class="rblock">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="insert">12</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.3.  Request Transaction Classification  . . . . . . . . .  14</span></td><td> </td><td class="rblock">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14</span></td><td> </td><td class="rblock">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  <span class="delete">16</span></td><td> </td><td class="rblock">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  <span class="delete">16</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="insert">16</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="delete">16</span></td><td> </td><td class="rblock">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="insert">17</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="delete">17</span></td><td> </td><td class="rblock">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="delete">22</span></td><td> </td><td class="rblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  <span class="delete">22</span></td><td> </td><td class="rblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="delete">23</span></td><td> </td><td class="rblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">24</span></td><td> </td><td class="rblock">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">24</span></td><td> </td><td class="rblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="delete">25</span></td><td> </td><td class="rblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  <span class="insert">24</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="delete">25</span></td><td> </td><td class="rblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  <span class="insert">24</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="delete">26</span></td><td> </td><td class="rblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="delete">26</span></td><td> </td><td class="rblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  <span class="delete">27</span></td><td> </td><td class="rblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">27</span></td><td> </td><td class="rblock">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  <span class="delete">28</span></td><td> </td><td class="rblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  <span class="delete">28</span></td><td> </td><td class="rblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="delete">29</span></td><td> </td><td class="rblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="delete">30</span></td><td> </td><td class="rblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="insert">29</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="delete">34</span></td><td> </td><td class="rblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="delete">34</span></td><td> </td><td class="rblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock">   Appendix B.  <span class="insert">Considerations for Applications Integrating the DOIC</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock"><span class="insert">                Solution</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock">     B.1.  <span class="insert">Application Classification</span>  . . . . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock"><span class="insert">     B.2.  Application Type Overload Implications</span>  . . . <span class="insert">. . . . . .  34</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock"><span class="insert">     B.3.  Request Transaction Classification  . . . . . . . . . . .  35</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">36</span></td><td> </td><td class="rblock"><span class="insert">     B.4.  Request Type Overload Implications  . . . . . . . . . . .  36</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  <span class="delete">Examples</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     B.1.  <span class="delete">Mix of Destination-Realm routed requests and Destination-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           Host routed requests</span>  . . . . . . . . . . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">40</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 11, line 35</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 11, line 35</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     Figure 1: Simplified architecture choices for overload indication</td><td> </td><td class="right">     Figure 1: Simplified architecture choices for overload indication</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                 delivery</td><td> </td><td class="right">                                 delivery</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In Figure 1, the Diameter overload indication can be conveyed (1)</td><td> </td><td class="right">   In Figure 1, the Diameter overload indication can be conveyed (1)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   end-to-end between servers and clients or (2) between servers and</td><td> </td><td class="right">   end-to-end between servers and clients or (2) between servers and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter agent inside the realm and then between the Diameter agent</td><td> </td><td class="right">   Diameter agent inside the realm and then between the Diameter agent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and the clients when the Diameter agent acting as back-to-back-agent</td><td> </td><td class="right">   and the clients when the Diameter agent acting as back-to-back-agent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for DOIC purposes.</td><td> </td><td class="right">   for DOIC purposes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">3.6.  Considerations for Applications Integrating the DOIC Solution</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   THis section outlines considerations to be taken into account when</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   integrating the DOIC solution into Diameter applications.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">3.6.1.  Application Classification</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The following is a classification of Diameter applications and</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests.  This discussion is meant to document factors that play</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   into decisions made by the Diameter identity responsible for handling</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload reports.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Section 8.1 of [RFC6733] defines two state machines that imply two</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   types of applications, session-less and session-based applications.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The primary difference between these types of applications is the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   lifetime of Session-Ids.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For session-based applications, the Session-Id is used to tie</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   multiple requests into a single session.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   In session-less applications, the lifetime of the Session-Id is a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   single Diameter transaction, i.e. the session is implicitly</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   terminated after a single Diameter transaction and a new Session-Id</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   is generated for each Diameter request.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For the purposes of this discussion, session-less applications are</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   further divided into two types of applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Stateless applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Requests within a stateless application have no relationship to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      each other.  The 3GPP defined S13 application is an example of a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      stateless application [S13], --&gt; where only a Diameter command is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      defined between a client and a server and no state is maintained</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      between two consecutive transactions.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Pseudo-session applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Applications that do not rely on the Session-Id AVP for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      correlation of application messages related to the same session</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      but use other session-related information in the Diameter requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      for this purpose.  The 3GPP defined Cx application [Cx] is an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      example of a pseudo-session application.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The Credit-Control application defined in [RFC4006] is an example of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   a Diameter session-based application.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The handling of overload reports must take the type of application</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   into consideration, as discussed in Section 3.6.2.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">3.6.2.  Application Type Overload Implications</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   This section discusses considerations for mitigating overload</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reported by a Diameter entity.  This discussion focuses on the type</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of application.  Section 3.6.3 discusses considerations for handling</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   various request types when the target server is known to be in an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overloaded state.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   These discussions assume that the strategy for mitigating the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reported overload is to reduce the overall workload sent to the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overloaded entity.  The concept of applying overload treatment to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests targeted for an overloaded Diameter entity is inherent to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   this discussion.  The method used to reduce offered load is not</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   specified here but could include routing requests to another Diameter</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   entity known to be able to handle them, or it could mean rejecting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   certain requests.  For a Diameter agent, rejecting requests will</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   usually mean generating appropriate Diameter error responses.  For a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Diameter client, rejecting requests will depend upon the application.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For example, it could mean giving an indication to the entity</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requesting the Diameter service that the network is busy and to try</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   again later.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Stateless applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      By definition there is no relationship between individual requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      in a stateless application.  As a result, when a request is sent</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      or relayed to an overloaded Diameter entity - either a Diameter</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Server or a Diameter Agent - the sending or relaying entity can</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      choose to apply the overload treatment to any request targeted for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the overloaded entity.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Pseudo-session applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      For pseudo-session applications, there is an implied ordering of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests.  As a result, decisions about which requests towards an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      overloaded entity to reject could take the command code of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      request into consideration.  This generally means that</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      transactions later in the sequence of transactions should be given</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      more favorable treatment than messages earlier in the sequence.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      This is because more work has already been done by the Diameter</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      network for those transactions that occur later in the sequence.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Rejecting them could result in increasing the load on the network</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      as the transactions earlier in the sequence might also need to be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      repeated.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Session-based applications:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Overload handling for session-based applications must take into</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      consideration the work load associated with setting up and</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      maintaining a session.  As such, the entity sending requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      towards an overloaded Diameter entity for a session-based</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      application might tend to reject new session requests prior to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      rejecting intra-session requests.  In addition, session ending</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests might be given a lower probability of being rejected as</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      rejecting session ending requests could result in session status</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      being out of sync between the Diameter clients and servers.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Application designers that would decide to reject mid-session</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests will need to consider whether the rejection invalidates</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the session and any resulting session clean-up procedures.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">3.6.3.  Request Transaction Classification</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Independent Request:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      An independent request is not correlated to any other requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      and, as such, the lifetime of the session-id is constrained to an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      individual transaction.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Session-Initiating Request:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      A session-initiating request is the initial message that</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      establishes a Diameter session.  The ACR message defined in</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      [RFC6733] is an example of a session-initiating request.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Correlated Session-Initiating Request:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      There are cases when multiple session-initiated requests must be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      correlated and managed by the same Diameter server.  It is notably</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the case in the 3GPP PCC architecture [PCC], where multiple</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      apparently independent Diameter application sessions are actually</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      correlated and must be handled by the same Diameter server.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Intra-Session Request:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      An intra session request is a request that uses the same Session-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Id than the one used in a previous request.  An intra session</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      request generally needs to be delivered to the server that handled</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the session creating request for the session.  The STR message</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      defined in [RFC6733] is an example of an intra-session requests.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Pseudo-Session Requests:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Pseudo-session requests are independent requests and do not use</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the same Session-Id but are correlated by other session-related</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      information contained in the request.  There exists Diameter</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      applications that define an expected ordering of transactions.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      This sequencing of independent transactions results in a pseudo</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      [Cx] application are examples of pseudo-session requests.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">3.6.4.  Request Type Overload Implications</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The request classes identified in Section 3.6.3 have implications on</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   decisions about which requests should be throttled first.  The</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   following list of request treatment regarding throttling is provided</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   as guidelines for application designers when implementing the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Diameter overload control mechanism described in this document.  The</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   exact behavior regarding throttling is a matter of local policy,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   unless specifically defined for the application.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Independent requests:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Independent requests can be given equal treatment when making</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      throttling decisions.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Session-initiating requests:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Session-initiating requests represent more work than independent</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      or intra-session requests.  Moreover, session-initiating requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      are typically followed by other session-related requests.  As</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      such, as the main objective of the overload control is to reduce</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the total number of requests sent to the overloaded entity,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      throttling decisions might favor allowing intra-session requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      over session-initiating requests.  Individual session-initiating</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests can be given equal treatment when making throttling</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      decisions.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Correlated session-initiating requests:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      A Request that results in a new binding, where the binding is used</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      for routing of subsequent session-initiating requests to the same</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      server, represents more work load than other requests.  As such,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      these requests might be throttled more frequently than other</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      request types.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Pseudo-session requests:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Throttling decisions for pseudo-session requests can take into</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      consideration where individual requests fit into the overall</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      sequence of requests within the pseudo session.  Requests that are</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      earlier in the sequence might be throttled more aggressively than</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests that occur later in the sequence.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Intra-session requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      There are two classes of intra-sessions requests.  The first class</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      consists of requests that terminate a session.  The second one</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      contains the set of requests that are used by the Diameter client</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      and server to maintain the ongoing session state.  Session</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      terminating requests should be throttled less aggressively in</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      order to gracefully terminate sessions, allow clean-up of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      related resources (e.g. session state) and get rid of the need for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      other intra-session requests, reducing the session management</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      impact on the overloaded entity.  The default handling of other</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      intra-session requests might be to treat them equally when making</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      throttling decisions.  There might also be application level</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      considerations whether some request types are favored over others.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.  Solution Procedures</td><td> </td><td class="right">4.  Solution Procedures</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section outlines the normative behavior associated with the DOIC</td><td> </td><td class="right">   This section outlines the normative behavior associated with the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution.</td><td> </td><td class="right">   solution.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.1.  Capability Announcement</td><td> </td><td class="right">4.1.  Capability Announcement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section defines DOIC Capability Announcement (DCA) behavior.</td><td> </td><td class="right">   This section defines DOIC Capability Announcement (DCA) behavior.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DCA procedures are used to indicate support for DOIC and support</td><td> </td><td class="right">   The DCA procedures are used to indicate support for DOIC and support</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 22, line 35</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 18, line 16</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a traffic reduction is required due to an overload condition and</td><td> </td><td class="right">   When a traffic reduction is required due to an overload condition and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload control solution is supported by the sender of the</td><td> </td><td class="right">   the overload control solution is supported by the sender of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter request, the reporting node MUST include an OC-Supported-</td><td> </td><td class="right">   Diameter request, the reporting node MUST include an OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td> </td><td class="right">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td> </td><td class="right">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td> </td><td class="right">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td> </td><td class="right">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the request sender.</td><td> </td><td class="right">   the request sender.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">A reporting node MUST only send overload reports of a type advertised</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   as supported by the reacting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Note that a reacting node advertises support for the host and</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      realm report types by including the OC-Supported-Features AVP in</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the request.  Support for other report types must be explicitly</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      indicated by a new feature bit in the OC-Feature-Vector AVP.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 30, line 29</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 26, line 10</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The above definition applies to Realm-Routed-Request reports where</td><td> </td><td class="right">      The above definition applies to Realm-Routed-Request reports where</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Realm reports are defined to apply to all requests that match the</td><td> </td><td class="right">      Realm reports are defined to apply to all requests that match the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm, independent of the presence, absence or value of the</td><td> </td><td class="right">      realm, independent of the presence, absence or value of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Destination-Host AVP.</td><td> </td><td class="right">      Destination-Host AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td> </td><td class="right">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   where a reacting node needs to apply different overload treatments</td><td> </td><td class="right">   where a reacting node needs to apply different overload treatments</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for different "types" of overload.  For example, the reacting node(s)</td><td> </td><td class="right">   for different "types" of overload.  For example, the reacting node(s)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   might need to throttle differently requests sent to a specific server</td><td> </td><td class="right">   might need to throttle differently requests sent to a specific server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (identified by the Destination-Host AVP in the request) and requests</td><td> </td><td class="right">   (identified by the Destination-Host AVP in the request) and requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   that can be handled by any server in a realm.  <span class="delete">The example in</span></td><td> </td><td class="rblock">   that can be handled by any server in a realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Appendix B.1 illustrates this usage.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.7.  OC-Reduction-Percentage AVP</td><td> </td><td class="right">6.7.  OC-Reduction-Percentage AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td> </td><td class="right">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and describes the percentage of the traffic that the sender is</td><td> </td><td class="right">   and describes the percentage of the traffic that the sender is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requested to reduce, compared to what it otherwise would send.  The</td><td> </td><td class="right">   requested to reduce, compared to what it otherwise would send.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Reduction-Percentage AVP applies to the default (loss) algorithm</td><td> </td><td class="right">   OC-Reduction-Percentage AVP applies to the default (loss) algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specified in this specification.  However, the AVP can be reused for</td><td> </td><td class="right">   specified in this specification.  However, the AVP can be reused for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   future abatement algorithms, if its semantics fit into the new</td><td> </td><td class="right">   future abatement algorithms, if its semantics fit into the new</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   algorithm.</td><td> </td><td class="right">   algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 37, line 17</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 33, line 17</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is</td><td> </td><td class="right">   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   somewhat under specified.  For example, there is no information how</td><td> </td><td class="right">   somewhat under specified.  For example, there is no information how</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   long the specific Diameter node is willing to be unavailable.  A</td><td> </td><td class="right">   long the specific Diameter node is willing to be unavailable.  A</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification updating [RFC6733] should clarify the handling of</td><td> </td><td class="right">   specification updating [RFC6733] should clarify the handling of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   DIAMETER_TOO_BUSY from the error answer initiating Diameter node</td><td> </td><td class="right">   DIAMETER_TOO_BUSY from the error answer initiating Diameter node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   point of view and from the original request initiating Diameter node</td><td> </td><td class="right">   point of view and from the original request initiating Diameter node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   point of view.  Further, the inclusion of possible additional</td><td> </td><td class="right">   point of view.  Further, the inclusion of possible additional</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   information providing AVPs should be discussed and possible be</td><td> </td><td class="right">   information providing AVPs should be discussed and possible be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   recommended to be used.</td><td> </td><td class="right">   recommended to be used.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">Appendix B.  <span class="delete">Examples</span></td><td> </td><td class="rblock">Appendix B.  <span class="insert">Considerations for Applications Integrating the DOIC</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">             Solution</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">B.1.  Mix of Destination-Realm routed requests and Destination-Host</span></td><td> </td><td class="rblock">   <span class="insert">THis section outlines considerations to be taken into account when</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      routed requests</span></td><td> </td><td class="rblock"><span class="insert">   integrating the DOIC solution into Diameter applications.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Diameter allows a client to optionally select the destination server</span></td><td> </td><td class="rblock"><span class="insert">B.1.</span>  Application <span class="insert">Classification</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of a request, even if there are agents between the client and the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   server.  The client does this using the Destination-Host AVP.  In</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   cases where the client does not care if a specific server receives</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the request, it can omit Destination-Host and route the request using</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the Destination-Realm and</span> Application <span class="delete">Id, effectively letting an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   agent select the server.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Clients commonly send mixtures</span> of <span class="delete">Destination-Host</span> and <span class="delete">Destination-</span></td><td> </td><td class="rblock">   <span class="insert">The following is a classification</span> of <span class="insert">Diameter applications</span> and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Realm routed</span> requests.  <span class="delete">For example, in an application that uses user</span></td><td> </td><td class="rblock">   requests.  <span class="insert">This discussion</span> is <span class="insert">meant</span> to <span class="insert">document factors that play</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   sessions, a client typically won't care which server handles a</span></td><td> </td><td class="rblock">   into <span class="insert">decisions made by the Diameter identity responsible for handling</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   session-initiating requests.  But once the session</span> is <span class="delete">initiated, the</span></td><td> </td><td class="rblock"><span class="insert">   overload reports.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   client will send all subsequent requests in that session</span> to <span class="delete">the same</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   server.  Therefore it would send the initial request with no</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Destination-Host AVP.  If it receives a successful answer, the client</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   would copy the Origin-Host value from the answer message</span> into <span class="delete">a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Destination-Host AVP in each subsequent request in the session.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">An agent has very limited options in applying overload abatement to</span></td><td> </td><td class="rblock">   <span class="insert">Section 8.1 of [RFC6733] defines two state machines</span> that <span class="insert">imply two</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests</span> that <span class="delete">contain Destination-Host AVPs.  It typically cannot</span></td><td> </td><td class="rblock"><span class="insert">   types of applications, session-less and session-based applications.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   route the request to a different server than the one identified in</span></td><td> </td><td class="rblock">   The <span class="insert">primary difference between these types of applications</span> is the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Destination-Host.  It's only remaining options are to throttle such</span></td><td> </td><td class="rblock">   <span class="insert">lifetime of Session-Ids.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests locally, or to send an overload report back towards the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   client so the client can throttle the requests.</span>  The <span class="delete">second choice</span> is</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">usually more efficient, since it prevents any throttled requests from</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   being sent in the first place, and removes the agent's need to send</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   errors back to</span> the <span class="delete">client for each dropped request.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">On</span> the <span class="delete">other hand, an agent has much more leeway</span> to <span class="delete">apply overload</span></td><td> </td><td class="rblock">   <span class="insert">For session-based applications,</span> the <span class="insert">Session-Id is used</span> to <span class="insert">tie</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   abatement for requests that do not contain Destination-Host AVPs.  If</span></td><td> </td><td class="rblock">   multiple requests <span class="insert">into a single session.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the agent has</span> multiple <span class="delete">servers in its peer table for the given realm</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   and application, it can route such</span> requests <span class="delete">to other, less overloaded</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   servers.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">If</span> the <span class="delete">overload severity increases,</span> the <span class="delete">agent may reach a point where</span></td><td> </td><td class="rblock">   <span class="insert">In session-less applications,</span> the <span class="insert">lifetime of</span> the <span class="insert">Session-Id</span> is <span class="insert">a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   there</span> is <span class="delete">not sufficient capacity across all servers to handle even</span></td><td> </td><td class="rblock"><span class="insert">   single Diameter transaction, i.e.</span> the <span class="insert">session is implicitly</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   realm-routed requests.  In this case, the realm itself can be</span></td><td> </td><td class="rblock"><span class="insert">   terminated after a single Diameter transaction</span> and <span class="insert">a new Session-Id</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   considered overloaded.  The agent may need</span> the <span class="delete">client to throttle</span></td><td> </td><td class="rblock">   is <span class="insert">generated</span> for <span class="insert">each Diameter request.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   realm-routed requests in addition to Destination-Host routed</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests.  The overload severity may be different for each server,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   and <span class="delete">the severity for the realm at</span> is <span class="delete">likely to be different than</span> for</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">any specific server.  Therefore, an agent may need to forward, or</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   originate, multiple overload reports with differing ReportType and</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Reduction-Percentage values.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Figure 2 illustrates such a mixed-routing scenario.  In this example,</span></td><td> </td><td class="rblock">   <span class="insert">For</span> the <span class="insert">purposes</span> of <span class="insert">this discussion, session-less applications</span> are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the servers S1, S2, and S3 handle requests for</span> the <span class="delete">realm "realm".</span></td><td> </td><td class="rblock">   <span class="insert">further divided into two types</span> of <span class="insert">applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Any</span> of <span class="delete">the three can handle requests that</span> are <span class="delete">not part</span> of <span class="delete">a user</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   session (i.e. routed by Destination-Realm).  But once a session is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   established, all requests in that session must go to the same server.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">        <span class="delete">Client     Agent      S1        S2        S3</span></td><td> </td><td class="rblock">   <span class="insert">Stateless applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |(1) Request (DR:realm)       |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |--------&gt;|         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |Agent selects S1   |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |(2) Request (DR:realm)       |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |--------&gt;|         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |S1 overloaded, returns OLR</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |(3) Answer (OR:realm,OH:S1,OLR:RT=DH)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |&lt;--------|         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |sees OLR,routes DR traffic to S2&amp;S3</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |(4) Answer (OR:realm,OH:S1, OLR:RT=DH) |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |&lt;--------|         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |Client throttles requests with DH:S1   |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |(5) Request (DR:realm)       |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |--------&gt;|         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |Agent selects S2   |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |(6) Request (DR:realm)       |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |------------------&gt;|         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |S2 is overloaded...</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |(7) Answer (OH:S2, OLR:RT=DH)|</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |&lt;------------------|         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |Agent sees OLR, realm now overloaded</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |&lt;--------|         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |Client throttles DH:S1, DH:S2, and DR:realm</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">           |         |         |         |         |</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Figure 2: Mix</span> of <span class="delete">Destination-Host</span> and <span class="delete">Destination-Realm Routed</span></td><td> </td><td class="rblock">      <span class="insert">Requests within a stateless application have no relationship to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">                                 Requests</span></td><td> </td><td class="rblock"><span class="insert">      each other.  The 3GPP defined S13 application is an example</span> of <span class="insert">a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      stateless application [S13], --&gt; where only a Diameter command is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      defined between a client</span> and <span class="insert">a server and no state is maintained</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      between two consecutive transactions.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">1.  The client sends a request with no Destination-Host AVP (that is,</span></td><td> </td><td class="rblock">   <span class="insert">Pseudo-session applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       a Destination-Realm routed request.)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">2.  The agent follows local policy</span> to <span class="delete">select a server from its peer</span></td><td> </td><td class="rblock">      <span class="insert">Applications that do not rely on the Session-Id AVP for</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       table.  In this case,</span> the <span class="delete">agent selects S2 and forwards</span> the</td><td> </td><td class="rblock"><span class="insert">      correlation of application messages related</span> to the <span class="insert">same session</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">request.</span></td><td> </td><td class="rblock"><span class="insert">      but use other session-related information in</span> the <span class="insert">Diameter requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      for this purpose.  The 3GPP defined Cx application [Cx] is an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      example of a pseudo-session application.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">3.  S1</span> is <span class="delete">overloaded.  It sends a answer indicating success, but also</span></td><td> </td><td class="rblock">   <span class="insert">The Credit-Control application defined in [RFC4006]</span> is an <span class="insert">example of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       includes</span> an <span class="delete">overload report.  Since the overload report only</span></td><td> </td><td class="rblock"><span class="insert">   a Diameter session-based application.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       applies to S1, the ReportType is "Destination-Host".</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">4.</span>  The <span class="delete">agent sees the overload report, and records that S1 is</span></td><td> </td><td class="rblock">   The <span class="insert">handling</span> of overload <span class="insert">reports must take</span> the <span class="insert">type</span> of <span class="insert">application</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       overloaded by the value in the Reduction-Percentage AVP.  It</span></td><td> </td><td class="rblock"><span class="insert">   into consideration, as discussed in Appendix B.2.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       begins diverting the indicated percentage</span> of <span class="delete">realm-routed traffic</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       from S1 to S2 and S3.  Since it can't divert Destination-Host</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       routed traffic, it forwards the</span> overload <span class="delete">report to the client.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       This effectively delegates</span> the <span class="delete">throttling</span> of <span class="delete">traffic with</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Destination-Host:S1 to the client.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   5.  The client sends another Destination-Realm routed request.</span></td><td> </td><td class="rblock"><span class="insert">B.2.  Application Type Overload Implications</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">6.  The agent selects S2, and forwards</span> the <span class="delete">request.</span></td><td> </td><td class="rblock">   <span class="insert">This section discusses considerations for mitigating overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   reported by a Diameter entity.  This discussion focuses on</span> the <span class="insert">type</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of application.  Appendix B.3 discusses considerations for handling</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   various request types when the target server is known to be in an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   overloaded state.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0021" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">7.  It turns out</span> that <span class="delete">S2</span> is <span class="delete">also overloaded, perhaps due</span> to <span class="delete">all that</span></td><td> </td><td class="rblock">   <span class="insert">These discussions assume</span> that <span class="insert">the strategy for mitigating the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       traffic it took over</span> for <span class="delete">S1.  S2 returns</span> an <span class="delete">successful answer</span></td><td> </td><td class="rblock"><span class="insert">   reported overload</span> is to <span class="insert">reduce the overall workload sent to the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       containing an overload report.  Since</span> this <span class="delete">report only applies</span> to</td><td> </td><td class="rblock"><span class="insert">   overloaded entity.  The concept of applying overload treatment to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">S2,</span> the <span class="delete">ReportType</span> is <span class="delete">"Destination-Host".</span></td><td> </td><td class="rblock"><span class="insert">   requests targeted</span> for an <span class="insert">overloaded Diameter entity is inherent to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   this <span class="insert">discussion.  The method used to reduce offered load is not</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   specified here but could include routing requests to another Diameter</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entity known to be able to handle them, or it could mean rejecting</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   certain requests.  For a Diameter agent, rejecting requests will</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   usually mean generating appropriate Diameter error responses.  For a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Diameter client, rejecting requests will depend upon the application.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   For example, it could mean giving an indication</span> to the <span class="insert">entity</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   requesting the Diameter service that the network</span> is <span class="insert">busy and to try</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   again later.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0022" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">8.  The agent sees that S2</span> is <span class="delete">also</span> overloaded <span class="delete">by</span> the <span class="delete">value</span> in</td><td> </td><td class="rblock">   <span class="insert">Stateless applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">Reduction-Percentage.</span>  This <span class="delete">value</span> is <span class="delete">probably different than</span> the</td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">value from S1's report.  The agent diverts</span> the <span class="delete">remaining traffic</span></td><td> </td><td class="rblock"><span class="insert">      By definition there</span> is <span class="insert">no relationship between individual requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       to S3</span> as <span class="delete">best</span> as <span class="delete">it can, but it calculates</span> that the <span class="delete">remaining</span></td><td> </td><td class="rblock"><span class="insert">      in a stateless application.  As a result, when a request is sent</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       capacity across all three servers</span> is <span class="delete">no longer sufficient</span> to</td><td> </td><td class="rblock"><span class="insert">      or relayed to an</span> overloaded <span class="insert">Diameter entity - either a Diameter</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">handle all of</span> the <span class="delete">realm-routed traffic.  This means</span> the <span class="delete">realm</span></td><td> </td><td class="rblock"><span class="insert">      Server or a Diameter Agent -</span> the <span class="insert">sending or relaying entity can</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       itself</span> is <span class="delete">overloaded.</span>  The <span class="delete">realm's overload percentage</span> is <span class="delete">most</span></td><td> </td><td class="rblock"><span class="insert">      choose to apply the overload treatment to any request targeted for</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       likely different</span> than that for <span class="delete">either S1 or S2.</span>  The <span class="delete">agent</span></td><td> </td><td class="rblock"><span class="insert">      the overloaded entity.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       forward's S2's report back to</span> the <span class="delete">client</span> in the Diameter <span class="delete">answer.</span></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Additionally,</span> the <span class="delete">agent generates</span> a <span class="delete">new report</span> for the <span class="delete">realm</span> of</td><td> </td><td class="rblock"><span class="insert">   Pseudo-session applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">"realm", and inserts</span> that <span class="delete">report</span> into the <span class="delete">answer.</span>  The <span class="delete">client</span></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       throttles</span> requests <span class="delete">with Destination-Host:S1 at</span> one <span class="delete">rate,</span> requests</td><td> </td><td class="rblock"><span class="insert">      For pseudo-session applications, there is an implied ordering of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">with Destination-Host:S2 at another rate,</span> and requests <span class="delete">with no</span></td><td> </td><td class="rblock"><span class="insert">      requests.  As a result, decisions about which requests towards an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Destination-Host AVP at yet a third rate.  (Since S3 has not</span></td><td> </td><td class="rblock"><span class="insert">      overloaded entity to reject could take the command code of the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       indicated overload,</span> the <span class="delete">client does not throttle</span> requests <span class="delete">with</span></td><td> </td><td class="rblock"><span class="insert">      request into consideration.  This generally means that</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       Destination-Host:S3.)</span></td><td> </td><td class="rblock"><span class="insert">      transactions later</span> in <span class="insert">the sequence of transactions should be given</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      more favorable treatment than messages earlier in the sequence.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      This is <span class="insert">because more work has already been done by</span> the <span class="insert">Diameter</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      network for those transactions that occur later in</span> the <span class="insert">sequence.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Rejecting them could result in increasing the load on the network</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      as <span class="insert">the transactions earlier in the sequence might also need to be</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      repeated.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Session-based applications:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Overload handling for session-based applications must take into</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      consideration the work load associated with setting up and</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      maintaining a session.  As such, the entity sending requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      towards an overloaded Diameter entity for a session-based</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      application might tend to reject new session requests prior to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      rejecting intra-session requests.  In addition, session ending</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      requests might be given a lower probability of being rejected</span> as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">rejecting session ending requests could result in session status</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      being out of sync between the Diameter clients and servers.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Application designers</span> that <span class="insert">would decide to reject mid-session</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      requests will need to consider whether</span> the <span class="insert">rejection invalidates</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the session and any resulting session clean-up procedures.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">B.3.  Request Transaction Classification</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Independent Request:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      An independent request</span> is <span class="insert">not correlated</span> to <span class="insert">any other requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      and, as such,</span> the <span class="insert">lifetime of</span> the <span class="insert">session-id</span> is <span class="insert">constrained to an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      individual transaction.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Session-Initiating Request:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      A session-initiating request is the initial message that</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      establishes a Diameter session.</span>  The <span class="insert">ACR message defined in</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      [RFC6733]</span> is <span class="insert">an example of a session-initiating request.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Correlated Session-Initiating Request:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      There are cases when multiple session-initiated requests must be</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      correlated and managed by the same Diameter server.  It is notably</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the case in the 3GPP PCC architecture [PCC], where multiple</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      apparently independent Diameter application sessions are actually</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      correlated and must be handled by the same Diameter server.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Intra-Session Request:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      An intra session request is a request that uses the same Session-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Id</span> than <span class="insert">the one used in a previous request.  An intra session</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      request generally needs to be delivered to the server</span> that <span class="insert">handled</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the session creating request</span> for <span class="insert">the session.</span>  The <span class="insert">STR message</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      defined in [RFC6733] is an example of an intra-session requests.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Pseudo-Session Requests:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Pseudo-session requests are independent requests and do not use</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      the <span class="insert">same Session-Id but are correlated by other session-related</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      information contained</span> in the <span class="insert">request.  There exists</span> Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">applications that define an expected ordering of transactions.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      This sequencing of independent transactions results in a pseudo</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      session.  The AIR, MAR and SAR requests in</span> the <span class="insert">3GPP defined Cx</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      [Cx] application are examples of pseudo-session requests.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">B.4.  Request Type Overload Implications</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The request classes identified in Appendix B.3 have implications on</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   decisions about which requests should be throttled first.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   following list of request treatment regarding throttling is provided</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   as guidelines for application designers when implementing the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Diameter overload control mechanism described in this document.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   exact behavior regarding throttling is</span> a <span class="insert">matter of local policy,</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   unless specifically defined</span> for the <span class="insert">application.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Independent requests:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Independent requests can be given equal treatment when making</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      throttling decisions.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Session-initiating requests:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Session-initiating requests represent more work than independent</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      or intra-session requests.  Moreover, session-initiating requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      are typically followed by other session-related requests.  As</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      such, as the main objective</span> of <span class="insert">the overload control is to reduce</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the total number of requests sent to the overloaded entity,</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      throttling decisions might favor allowing intra-session requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      over session-initiating requests.  Individual session-initiating</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      requests can be given equal treatment when making throttling</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      decisions.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Correlated session-initiating requests:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      A Request</span> that <span class="insert">results in a new binding, where the binding is used</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      for routing of subsequent session-initiating requests to the same</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      server, represents more work load than other requests.  As such,</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      these requests might be throttled more frequently than other</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      request types.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Pseudo-session requests:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Throttling decisions for pseudo-session requests can take into</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      consideration where individual requests fit</span> into the <span class="insert">overall</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      sequence of requests within the pseudo session.  Requests that are</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      earlier in the sequence might be throttled more aggressively than</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      requests that occur later in the sequence.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Intra-session requests</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      There are two classes of intra-sessions requests.</span>  The <span class="insert">first class</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      consists of</span> requests <span class="insert">that terminate a session.  The second</span> one</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">contains the set of</span> requests <span class="insert">that are used by the Diameter client</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      and <span class="insert">server to maintain the ongoing session state.  Session</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      terminating</span> requests <span class="insert">should be throttled less aggressively in</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      order to gracefully terminate sessions, allow clean-up of</span> the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">related resources (e.g. session state) and get rid of the need for</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      other intra-session requests, reducing the session management</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      impact on the overloaded entity.  The default handling of other</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      intra-session</span> requests <span class="insert">might be to treat them equally when making</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      throttling decisions.  There might also be application level</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      considerations whether some request types are favored over others.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Authors' Addresses</td><td> </td><td class="right">Authors' Addresses</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0023" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">                                                                         </span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Jouni Korhonen (editor)</td><td> </td><td class="right">   Jouni Korhonen (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Broadcom</td><td> </td><td class="right">   Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Porkkalankatu 24</td><td> </td><td class="right">   Porkkalankatu 24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Helsinki  FIN-00180</td><td> </td><td class="right">   Helsinki  FIN-00180</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Finland</td><td> </td><td class="right">   Finland</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Email: jouni.nospam@gmail.com</td><td> </td><td class="right">   Email: jouni.nospam@gmail.com</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Steve Donovan (editor)</td><td> </td><td class="right">   Steve Donovan (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Oracle</td><td> </td><td class="right">   Oracle</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 23 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>418 lines changed or deleted</i></th><th><i> </i></th><th><i>249 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . .
  . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  21\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-
 Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n     9.4.  End-to End-Security Issues  . . 
 . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4
 .  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is dep
 loyable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both
  throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance
  (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   
 perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOI
 C parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document 
 specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the
  application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not
  host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level A
 VPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\
 n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   A
 VPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload ab
 atement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use th
 e indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-
 Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in th
 is document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host
 \n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  T
 he loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The
  DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new A
 VPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ : 
   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Di
 ameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure th
 at all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document
  and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included
  MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The r
 eporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type re
 quests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received wit
 hin OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer
  of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Rea
 cting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indic
 ating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting 
 node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns
  whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For exam
 ple, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequen
 ce-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting no
 de MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting 
 node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one
  of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Be
 havior\n\n   Editor\'s note -- Need to add this section.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be
  understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the giv
 en OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Dia
 meter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by 
 the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messag
 es.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the 
 loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent red
 uction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    D
 OIC                      October 2014\n\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC feature
 s of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common 
 set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When t
 his flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      O
 C-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\nKorhonen, et al.         Expires April 2
 3, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-
 Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n
    invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n  
     for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of th
 e following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destina
 tion-Host AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   futur
 e abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n   
                                                       _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Typ
 e         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\
 n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial a
 ssignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload
  reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent fo
 r certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing
  an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example,
  an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume t
 hat\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the pre
 sence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protecti
 on means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to e
 stablish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S
 ., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Le
 vel Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left 
 for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A
 \n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-ba
 sed applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.  
        Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handli
 ng\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By
  definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the se
 quence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designe
 rs that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n    
   correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n  
     session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by oth
 er session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-ses
 sion requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be
  to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\
 n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequiremen
 ts\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c
 ) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . 
 .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n     3.6.  Considerations for Applications Integrating the DOIC\n           Solution  . . . . . . . . . . . . . . . . . . . . . . . .  11\n       3.6.1.  Application Classification  . . . . . . . . . . . . .  11\n       3.6.2.  Application Type Overload Implications  . . . . . . .  12\n       3.6.3.  Request Transaction Classification  . . . . . . . . .  14\n       3.6.4.  Request Type Overload Implications  . . . . . . . . .  14\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  16\n     4.1.  Capability Announcement . 
 . . . . . . . . . . . . . . . .  16\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  18\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  18\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  20\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  22\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  22\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  23\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  24\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  25\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  25
 \n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  26\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  26\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  27\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  27\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  28\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  28\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  29\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  30\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  31\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  31\n     8.1.  AVP codes
  . . . . . . . . . . . . . . . . . . . . . . . .  31\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  32\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  32\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  32\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  33\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  34\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  34\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  35\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  35\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  35\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  36\n   Appendix A.  Issues left for future specifications  . . . . . . .  36\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  36\n     A.2.  Agent Overload  . . . . . . . . . . . . . . 
 . . . . . . .  36\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  37\n   Appendix B.  Examples . . . . . . . . . . . . . . . . . . . . . .  37\n     B.1.  Mix of Destination-Realm routed requests and Destination-\n           Host routed requests  . . . . . . . . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  40\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   ove
 rload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate e
 rror responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacti
 ng nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node consumes OLRs, and perf
 orms whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to c
 arry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   
 Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   such behaviors
 .  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   se
 rvers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Pigg
 ybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include
  overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC C
 apability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      D
 OIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n
 \n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the
  features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatemen
 t algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for 
 making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   R
 eacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Th
 e reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Suppor
 ted-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _-----------------------------------
 ---_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplifi
 ed architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n3.6.  Considerations for Applications Integrating the DOIC Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\n3.6.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and 
 session-based applications.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ wh
 ere only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Section 3.6.2.\n\n3.6.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Section 3.6.3 discusses conside
 rations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, 
 it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages e
 arlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      App
 lication designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.6.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the sam
 e Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions res
 ults in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\n3.6.4.  Request Type Overload Implications\n\n   The request classes identified in Section 3.6.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating request
 s:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling d
 ecisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-se
 ssion requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter age
 nts that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only featu
 re\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n
    answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on lo
 cal reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting N
 odes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  
 Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. sh
 ould not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than val
 idity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence o
 f OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the 
 current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in th
 e OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when 
 only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   d
 iscarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   vali
 dity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diame
 ter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\
 n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, 
 new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bit
 s in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA. 
  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   requ
 est a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could 
 be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequ
 ent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarante
 es that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of tr
 affic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory t
 o\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to anno
 unce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer als
 o includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the
  reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-
 Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of v
 iew, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When t
 he\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence num
 ber) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\
 n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      val
 ue of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "ty
 pes" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.  The example in\n   Appendix B.1 illustrates this usage.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the repo
 rting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined
   Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+--
 --+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\
 n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduc
 tion.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection,
  or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   Th
 ere are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload rep
 ort indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to ce
 ase sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take a
 dvantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the
  message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an ov
 erload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is ena
 bled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burban
 k, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credi
 t-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See
  Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discus
 sed and possible be\n   recommended to be used.\n\nAppendix B.  Examples\n\nB.1.  Mix of Destination-Realm routed requests and Destination-Host\n      routed requests\n\n   Diameter allows a client to optionally select the destination server\n   of a request, even if there are agents between the client and the\n   server.  The client does this using the Destination-Host AVP.  In\n   cases where the client does not care if a specific server receives\n   the request, it can omit Destination-Host and route the request using\n   the Destination-Realm and Application Id, effectively letting an\n   agent select the server.\n\n   Clients commonly send mixtures of Destination-Host and Destination-\n   Realm routed requests.  For example, in an application that uses user\n   sessions, a client typically won\'t care which server handles a\n   session-initiating requests.  But once the session is initiated, the\n   client will send all subsequent requests in that session to the same\n   server
 .  Therefore it would send the initial request with no\n   Destination-Host AVP.  If it receives a successful answer, the client\n   would copy the Origin-Host value from the answer message into a\n   Destination-Host AVP in each subsequent request in the session.\n\n   An agent has very limited options in applying overload abatement to\n   requests that contain Destination-Host AVPs.  It typically cannot\n   route the request to a different server than the one identified in\n   Destination-Host.  It\'s only remaining options are to throttle such\n   requests locally, or to send an overload report back towards the\n   client so the client can throttle the requests.  The second choice is\n   usually more efficient, since it prevents any throttled requests from\n   being sent in the first place, and removes the agent\'s need to send\n   errors back to the client for each dropped request.\n\n   On the other hand, an agent has much more leeway to apply overload\n   abatement for request
 s that do not contain Destination-Host AVPs.  If\n   the agent has multiple servers in its peer table for the given realm\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and application, it can route such requests to other, less overloaded\n   servers.\n\n   If the overload severity increases, the agent may reach a point where\n   there is not sufficient capacity across all servers to handle even\n   realm-routed requests.  In this case, the realm itself can be\n   considered overloaded.  The agent may need the client to throttle\n   realm-routed requests in addition to Destination-Host routed\n   requests.  The overload severity may be different for each server,\n   and the severity for the realm at is likely to be different than for\n   any specific server.  Therefore, an agent may need to forward, or\n   originate, multiple overload reports with differing ReportTyp
 e and\n   Reduction-Percentage values.\n\n   Figure 2 illustrates such a mixed-routing scenario.  In this example,\n   the servers S1, S2, and S3 handle requests for the realm "realm".\n   Any of the three can handle requests that are not part of a user\n   session (i.e. routed by Destination-Realm).  But once a session is\n   established, all requests in that session must go to the same server.\n\n        Client     Agent      S1        S2        S3\n           _         _         _         _         _\n           _(1) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S1   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(2) Request (DR:realm)       _\n 
           _         _--------__         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _S1 overloaded, returns OLR\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(3) Answer (OR:realm,OH:S1,OLR:RT=DH)\n           _         __--------_         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _sees OLR,routes DR traffic to S2_S3\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(4) Answer (OR:realm,OH:S1, OLR:RT=DH) _\n           __--------_         _         _         _\n\n\n\nKorhonen, et al.         Expires April 23, 2015         
        [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles requests with DH:S1   _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(5) Request (DR:realm)       _         _\n           _--------__         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent selects S2   _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(6) Request (DR:realm)       _\n           _         _------------------__         _\n           _         _         _  
        _         _\n           _         _         _         _         _\n           _         _         _         _S2 is overloaded...\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _(7) Answer (OH:S2, OLR:RT=DH)_\n           _         __------------------_         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _Agent sees OLR, realm now overloaded\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _(8) Answer (OR:realm,OH:S2, OLR:RT=DH, OLR: RT=R)\n           __--------_         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _Client throttles DH:S1,
  DH:S2, and DR:realm\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n           _         _         _         _         _\n\n\n\n      Figure 2: Mix of Destination-Host and Destination-Realm Routed\n                                 Requests\n\n   1.  The client sends a request with no Destination-Host AVP (that is,\n       a Destination-Realm routed request.)\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   2.  The agent follows local policy to select a server from its peer\n       table.  In this case, the agent selects S2 and forwards the\n       request.\n\n   3.  S1 is overloaded.  It sends a answer indicating success, but also\n       includes an overload report.  Since the overload report only\n  
      applies to S1, the ReportType is "Destination-Host".\n\n   4.  The agent sees the overload report, and records that S1 is\n       overloaded by the value in the Reduction-Percentage AVP.  It\n       begins diverting the indicated percentage of realm-routed traffic\n       from S1 to S2 and S3.  Since it can\'t divert Destination-Host\n       routed traffic, it forwards the overload report to the client.\n       This effectively delegates the throttling of traffic with\n       Destination-Host:S1 to the client.\n\n   5.  The client sends another Destination-Realm routed request.\n\n   6.  The agent selects S2, and forwards the request.\n\n   7.  It turns out that S2 is also overloaded, perhaps due to all that\n       traffic it took over for S1.  S2 returns an successful answer\n       containing an overload report.  Since this report only applies to\n       S2, the ReportType is "Destination-Host".\n\n   8.  The agent sees that S2 is also overloaded by the value in\n       Redu
 ction-Percentage.  This value is probably different than the\n       value from S1\'s report.  The agent diverts the remaining traffic\n       to S3 as best as it can, but it calculates that the remaining\n       capacity across all three servers is no longer sufficient to\n       handle all of the realm-routed traffic.  This means the realm\n       itself is overloaded.  The realm\'s overload percentage is most\n       likely different than that for either S1 or S2.  The agent\n       forward\'s S2\'s report back to the client in the Diameter answer.\n       Additionally, the agent generates a new report for the realm of\n       "realm", and inserts that report into the answer.  The client\n       throttles requests with Destination-Host:S1 at one rate, requests\n       with Destination-Host:S2 at another rate, and requests with no\n       Destination-Host AVP at yet a third rate.  (Since S3 has not\n       indicated overload, the client does not throttle requests with\n       Dest
 ination-Host:S3.)\n\nAuthors\' Addresses\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 40]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 41]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------000207010709030507070803--


From nobody Mon Oct 20 04:20:30 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8C7A31A86E8 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:14:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.789
X-Spam-Level: 
X-Spam-Status: No, score=0.789 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Rrn3kBhL-ECY for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:14:51 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 656CD1A86E9 for <dime@ietf.org>; Mon, 20 Oct 2014 04:14:51 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:51382 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgAvJ-0006qm-Fl for dime@ietf.org; Mon, 20 Oct 2014 04:14:50 -0700
Message-ID: <5444EEA8.500@usdonovans.com>
Date: Mon, 20 Oct 2014 13:14:48 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------040105000106000400020103"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/wRiCacROr2kut5srYFttsnts6s4
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:19:59 -0700
Subject: [Dime] Resolution to #72
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:14:54 -0000

This is a multi-part message in MIME format.
--------------040105000106000400020103
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've updated github to reflect changes to #72.

I've attached the resulting diff file.

Regards,

Steve

--------------040105000106000400020103
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 32</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 32</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  2<span class="delete">1</span></td><td> </td><td class="rblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  2<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="delete">6</span></td><td> </td><td class="rblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 18, line 9</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 18, line 9</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The operation on the reporting node is straight forward.  The</td><td> </td><td class="right">   The operation on the reporting node is straight forward.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node learns the capabilities of the reacting node when it</td><td> </td><td class="right">   reporting node learns the capabilities of the reacting node when it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receives the OC-Supported-Features AVP as part of any Diameter</td><td> </td><td class="right">   receives the OC-Supported-Features AVP as part of any Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request message.  Since the loss abatement algorithm Section 5 is</td><td> </td><td class="right">   request message.  Since the loss abatement algorithm Section 5 is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mandatory to implement DOIC can always be enabled between these DOIC</td><td> </td><td class="right">   mandatory to implement DOIC can always be enabled between these DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   nodes See Section 4.1 for further discussion on the capability and</td><td> </td><td class="right">   nodes See Section 4.1 for further discussion on the capability and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   feature announcement.</td><td> </td><td class="right">   feature announcement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a traffic reduction is required due to an overload condition and</td><td> </td><td class="right">   When a traffic reduction is required due to an overload condition and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload control solution is supported by the sender of the</td><td> </td><td class="right">   the overload control solution is supported by the sender of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Diameter request, the reporting node <span class="delete">MUST</span> include an OC-Supported-</td><td> </td><td class="rblock">   Diameter request, the reporting node <span class="insert">SHOULD</span> include an OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td> </td><td class="right">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">A reporting node MAY choose to not send an overload report to a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   reacting node if it can guarantee that this overload report is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   already active in the reacting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Note - In some cases (e.g. when there are one or multiple agents</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      in the path between reporting and reacting nodes, or when overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      reports are discarded by reacting nodes) the reporting node may</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      not be able to guarantee that the reacting node has received the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      report.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td> </td><td class="right">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td> </td><td class="right">   Supported-Features AVP indicates the traffic abatement algorithm to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td> </td><td class="right">   apply.  This algorithm MUST be one of the algorithms advertised by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the request sender.</td><td> </td><td class="right">   the request sender.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MUST only send overload reports of a type advertised</td><td> </td><td class="right">   A reporting node MUST only send overload reports of a type advertised</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   as supported by the reacting node.</td><td> </td><td class="right">   as supported by the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that a reacting node advertises support for the host and</td><td> </td><td class="right">      Note that a reacting node advertises support for the host and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm report types by including the OC-Supported-Features AVP in</td><td> </td><td class="right">      realm report types by including the OC-Supported-Features AVP in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 20, line 39</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 21, line 12</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       abatement treatment, otherwise the request is given normal</td><td> </td><td class="right">       abatement treatment, otherwise the request is given normal</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       routing treatment.</td><td> </td><td class="right">       routing treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">5.2.  Reporting Node Behavior</td><td> </td><td class="right">5.2.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The method a reporting nodes uses to determine the amount of traffic</td><td> </td><td class="right">   The method a reporting nodes uses to determine the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reduction required to address an overload condition is an</td><td> </td><td class="right">   reduction required to address an overload condition is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implementation decision.</td><td> </td><td class="right">   implementation decision.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a reporting node that has selected the loss abatement algorithm</td><td> </td><td class="right">   When a reporting node that has selected the loss abatement algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   determines the need to request a traffic reduction it <span class="delete">must include</span> an</td><td> </td><td class="rblock">   determines the need to request a traffic reduction it <span class="insert">includes</span> an <span class="insert">OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">OC-OLR</span> AVP in <span class="delete">all</span> response <span class="delete">messages.</span></td><td> </td><td class="rblock"><span class="insert">   OLR</span> AVP in response <span class="insert">messages as described in Section 4.2.3.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node must indicate a percentage reduction in the OC-</td><td> </td><td class="right">   The reporting node must indicate a percentage reduction in the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reduction-Percentage AVP.</td><td> </td><td class="right">   Reduction-Percentage AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node may change the reduction percentage in subsequent</td><td> </td><td class="right">   The reporting node may change the reduction percentage in subsequent</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports.  When doing so the reporting node must conform to</td><td> </td><td class="right">   overload reports.  When doing so the reporting node must conform to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report handing specified in Section 4.2.3.</td><td> </td><td class="right">   overload report handing specified in Section 4.2.3.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When the reporting node determines it no longer needs a reduction in</td><td> </td><td class="right">   When the reporting node determines it no longer needs a reduction in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic the reporting node should send an overload report indicating</td><td> </td><td class="right">   traffic the reporting node should send an overload report indicating</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 6 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>9 lines changed or deleted</i></th><th><i> </i></th><th><i>20 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . .
  . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-
 Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n     9.4.  End-to End-Security Issues  . . 
 . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4
 .  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is dep
 loyable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both
  throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance
  (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   
 perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOI
 C parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document 
 specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the
  application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not
  host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level A
 VPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\
 n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   A
 VPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload ab
 atement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use th
 e indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-
 Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in th
 is document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host
 \n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  T
 he loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The
  DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new A
 VPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ : 
   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Di
 ameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure th
 at all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document
  and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included
  MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The r
 eporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type re
 quests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received wit
 hin OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer
  of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Rea
 cting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indic
 ating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting 
 node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns
  whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For exam
 ple, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequen
 ce-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting no
 de MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting 
 node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n
 \n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Dura
 tion AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This 
 feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the fe
 atures.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKo
 rhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload repor
 t.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage the
 n the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.
 3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes ou
 t of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatemen
 t treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector an
 d OC-OLR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n\n\n\nKorhonen, et al.         
 Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertise
 d by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction perce
 ntage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overloa
 d report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence nu
 mber is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values a
 bove 86400\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the
  reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received me
 ssage that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID
  in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n 
   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting n
 ode to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +----------
 ----------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diamete
 r base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n
    Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload report
 s may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentialit
 y\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If thi
 s third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effecti
 vely reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in su
 pport of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement
  strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   crea
 ting a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a D
 iameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control w
 ill\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expi
 res April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diamet
 er Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extensio
 n will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations t
 o be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of 
 this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Cr
 edit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Dia
 meter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a 
 session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the i
 nitial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for 
 the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in
  this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015  
               [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that
  are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\nKorhonen, et al.
          Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n              
                                                  L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working document
 s as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   car
 efully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . 
 . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reactin
 g Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  21\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . 
 . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n 
     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload cont
 rol solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3
 ]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node
  applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement
  by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultane
 ously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   A
 VPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts w
 ould do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement
  on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in
  this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [P
 age 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the s
 erver\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it suppo
 rts the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC
 -Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to
  insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overl
 oad Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for th
 e\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or rel
 ayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero t
 o indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to co
 mmunicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\
 n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n    
                          Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC feat
 ures.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request mess
 ages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting n
 ode knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting 
 node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messag
 es.\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the 
 pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abate
 ment Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing
  an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) whe
 n receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,A
 lg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first t
 ime for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this
 \n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.  
        Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm a
 nnounced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatemen
 t associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discuss
 ion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node MUST include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node
  MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capab
 ility\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the ex
 tensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required proc
 edures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   traffic impacted by the requested reduction depends on the type of
 \n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduc
 tion percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it must include an\n   OC-OLR AVP in all response messages.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n\n\n\n\nKorhonen,
  et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of t
 he 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce
  the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-O
 LR AVPs\n   reused in newly defined Diameter applications SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or 
 capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between t
 hese DOIC nodes.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.
   The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subseq
 uent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is on
 ly required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400
 \n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report
  containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message th
 at\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP
 .\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (ide
 ntified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to
  apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _ 
    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n  
  As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 20
 14\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n
    vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peer
 s, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload 
 report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example
 .net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter
  is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diam
 eter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from 
 their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by o
 ther nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security m
 echanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\
 n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifi
 cations on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n 
   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis s
 ection outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter req
 uest.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-s
 ession application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include
  routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015
                 [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with sett
 ing up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A ses
 sion-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      t
 he session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overloa
 d control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al. 
         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      c
 ontains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonova
 ns.com\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------040105000106000400020103--


From nobody Mon Oct 20 04:33:58 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 422E81A86F4 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:33:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gEeB1HEjkaWH for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:33:55 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F2B141A802B for <dime@ietf.org>; Mon, 20 Oct 2014 04:33:54 -0700 (PDT)
Received: from localhost ([::1]:43961 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgBDj-0001VZ-BM; Mon, 20 Oct 2014 04:33:51 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 11:33:51 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/73#comment:1
Message-ID: <096.f80f9ea65f9ce677eb90d2e23b0f28d9@trac.tools.ietf.org>
References: <081.1b4a897dcd07e50c4d2a8df5bb419ded@trac.tools.ietf.org>
X-Trac-Ticket-ID: 73
In-Reply-To: <081.1b4a897dcd07e50c4d2a8df5bb419ded@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/8cntaCG50rm6aHNPpFSSMpvNhkA
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #73 (draft-ietf-dime-ovli): Clarifications On Mbit
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:33:56 -0000

#73: Clarifications On Mbit

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Based on agreement during the France interim meeting, changed M-bit
 wording to reference RFC6733.

 Resulted in modified wording in section 4.3 and section 6.

-- 
-------------------------------------+-------------------------------------
 Reporter:  jean-jacques.trottin     |       Owner:  draft-ietf-dime-
  @alcatel-lucent.com                |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/73#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 04:36:59 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E7FA91A86EE for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:36:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.29
X-Spam-Level: 
X-Spam-Status: No, score=0.29 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2Wy643ufOKqd for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:36:07 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 28AFF1A86EC for <dime@ietf.org>; Mon, 20 Oct 2014 04:36:07 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:51473 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgBFt-0008sy-5z for dime@ietf.org; Mon, 20 Oct 2014 04:36:06 -0700
Message-ID: <5444F3A4.8030904@usdonovans.com>
Date: Mon, 20 Oct 2014 13:36:04 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------000504080006030503010108"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/U0rQBZ4XHPRiFu2DenHefCJXWEg
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:36:57 -0700
Subject: [Dime] Resolution of issue 73
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:36:11 -0000

This is a multi-part message in MIME format.
--------------000504080006030503010108
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've updated github with the resolution of issue 73 on M-bit handling.

I also removed the agent behavior sections that should have been deleted 
when closing issues 60 and 61.

I've attached the resulting diff file.

Regards,

Steve

--------------000504080006030503010108
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 26</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 26</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td> </td><td class="right">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td> </td><td class="right">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18</span></td><td> </td><td class="rblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="delete">21</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="delete">7</span></td><td> </td><td class="rblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 13, line 30</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 13, line 30</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td> </td><td class="right">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td> </td><td class="right">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   drafts in response messages for transactions where the request</td><td> </td><td class="right">   drafts in response messages for transactions where the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td> </td><td class="right">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Supported-Features AVP in the request message indicates that there</td><td> </td><td class="right">   OC-Supported-Features AVP in the request message indicates that there</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is no reacting node for the transaction.</td><td> </td><td class="right">   is no reacting node for the transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An agent MAY modify the OC-Supported-Features AVP carried in answer</td><td> </td><td class="right">   An agent MAY modify the OC-Supported-Features AVP carried in answer</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   messages.</td><td> </td><td class="right">   messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">4.1.3.  Agent Behavior</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Editor's note -- Need to add this section.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.  Overload Report Processing</td><td> </td><td class="right">4.2.  Overload Report Processing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.  Overload Control State</td><td> </td><td class="right">4.2.1.  Overload Control State</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Both reacting and reporting nodes maintain an overload control state</td><td> </td><td class="right">   Both reacting and reporting nodes maintain an overload control state</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (OCS) for active overload reports.</td><td> </td><td class="right">   (OCS) for active overload reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.1.  Overload Control State for Reacting Nodes</td><td> </td><td class="right">4.2.1.1.  Overload Control State for Reacting Nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node maintains the following OCS per supported Diameter</td><td> </td><td class="right">   A reacting node maintains the following OCS per supported Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 18, line 45</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 18, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">4.2.4.  Agent Behavior</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Editor's note -- Need to add this section.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.3.  Protocol Extensibility</td><td> </td><td class="right">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The extention may also define new AVPs for use in DOIC Capability</td><td> </td><td class="right">   The extention may also define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Anouncement and for use in DOIC Overload reporting.  These new AVP</td><td> </td><td class="right">   Anouncement and for use in DOIC Overload reporting.  These new AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   should be defined to be extensions to the OC-Supported-Features and</td><td> </td><td class="right">   should be defined to be extensions to the OC-Supported-Features and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVPs defined in this document.</td><td> </td><td class="right">   OC-OLR AVPs defined in this document.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   It should be noted that [RFC6733] defined Grouped AVP extension</td><td> </td><td class="right">   It should be noted that [RFC6733] defined Grouped AVP extension</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mechanisms apply.  This allows, for example, defining a new feature</td><td> </td><td class="right">   mechanisms apply.  This allows, for example, defining a new feature</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that is mandatory to be understood even when piggybacked on an</td><td> </td><td class="right">   that is mandatory to be understood even when piggybacked on an</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   existing applications.  <span class="delete">More specifically, the sub-AVPs inside the</span></td><td> </td><td class="rblock">   existing applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   However, when overload control AVPs are piggybacked on top of an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The handling of feature bits in the OC-Feature-Vector AVP that are</td><td> </td><td class="right">   The handling of feature bits in the OC-Feature-Vector AVP that are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   not associated with overload abatement algorithms MUST be specified</td><td> </td><td class="right">   not associated with overload abatement algorithms MUST be specified</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by the extensions that define the features.</td><td> </td><td class="right">   by the extensions that define the features.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining new report type values, the corresponding specification</td><td> </td><td class="right">   When defining new report type values, the corresponding specification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   MUST define the semantics of the new report types and how they affect</td><td> </td><td class="right">   MUST define the semantics of the new report types and how they affect</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-OLR AVP handling.  The specification MUST also reserve a</td><td> </td><td class="right">   the OC-OLR AVP handling.  The specification MUST also reserve a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   corresponding new feature, see the OC-Supported-Features and OC-</td><td> </td><td class="right">   corresponding new feature, see the OC-Supported-Features and OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Feature-Vector AVPs.</td><td> </td><td class="right">   Feature-Vector AVPs.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 22, line 31</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 22, line 18</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Indication Attribute Value Pairs (AVPs) defined in this</td><td> </td><td class="right">   Overload Indication Attribute Value Pairs (AVPs) defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   document.</td><td> </td><td class="right">   document.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When added to existing commands, both OC-Feature-Vector and OC-OLR</td><td> </td><td class="right">   When added to existing commands, both OC-Feature-Vector and OC-OLR</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVPs SHOULD have the M-bit flag cleared to avoid backward</td><td> </td><td class="right">   AVPs SHOULD have the M-bit flag cleared to avoid backward</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   compatibility issues.</td><td> </td><td class="right">   compatibility issues.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A new application specification can incorporate the overload control</td><td> </td><td class="right">   A new application specification can incorporate the overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mechanism specified in this document by making it mandatory to</td><td> </td><td class="right">   mechanism specified in this document by making it mandatory to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implement for the application and referencing this specification</td><td> </td><td class="right">   implement for the application and referencing this specification</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   normatively.  In such a case, the <span class="delete">OC-Feature-Vector and OC-OLR AVPs</span></td><td> </td><td class="rblock">   normatively.  In such a case, the <span class="insert">rules for handling of</span> the M-bit</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reused in newly defined Diameter applications SHOULD have</span> the M-bit</td><td> </td><td class="rblock">   <span class="insert">must follow the guidance in [RFC6733].  It</span> is the responsibility of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">flag set.  However, it</span> is the responsibility of the Diameter</td><td> </td><td class="rblock">   the Diameter application designers to define how overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   application designers to define how overload control mechanisms works</td><td> </td><td class="rblock">   mechanisms works on that application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   on that application.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.1.  OC-Supported-Features AVP</td><td> </td><td class="right">6.1.  OC-Supported-Features AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and</td><td> </td><td class="right">   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   serves for two purposes.  First, it announces a node's support for</td><td> </td><td class="right">   serves for two purposes.  First, it announces a node's support for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the DOIC in general.  Second, it contains the description of the</td><td> </td><td class="right">   the DOIC in general.  Second, it contains the description of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported DOIC features of the sending node.  The OC-Supported-</td><td> </td><td class="right">   supported DOIC features of the sending node.  The OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP MUST be included in every Diameter message a DOIC</td><td> </td><td class="right">   Features AVP MUST be included in every Diameter message a DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supporting node sends.</td><td> </td><td class="right">   supporting node sends.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 7 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>24 lines changed or deleted</i></th><th><i> </i></th><th><i>10 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  I
 ntroduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n
 2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests 
 and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load of
 fered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is indepen
 dent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by ins
 erting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n 
   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is refer
 red to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjac
 ent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF)
  specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message 
 type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solu
 tion.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not alr
 eady contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a
 \n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n 
      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to req
 uests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as
  such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solu
 tions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are mult
 iple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions ca
 n also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ 
 : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   f
 or DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features 
 AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 an
 d Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft
                     DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts 
 in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Applicat
 ion-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually se
 lected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id 
 = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer mes
 sage of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: R
 eporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not 
 change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-
 Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports i
 s\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST upd
 ate the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overloa
 d condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to 
 implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting nod
 e may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\
 n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-
 OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report 
 handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n
 \n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter req
 uest is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting 
 node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   
 reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the rea
 cting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in thi
 s\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in
  every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Sup
 ported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abat
 ement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n     
             _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded an
 d the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in second
 s the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can 
 be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Dest
 ination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in 
 the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\
 n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The
  value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                     
                                     _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +-------------------------------
 -------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Consi
 derations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226
 ].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diam
 eter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization de
 cisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to
  acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS a
 ttack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests
  with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other prot
 ection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   
 contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\
 n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RF
 C 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00
  (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algori
 thms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BU
 SY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\
 n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft               
      DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded 
 state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless a
 pplication.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      ne
 twork for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether
  the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.   
       Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] applicati
 on are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload cont
 rol is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the 
 overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be app
 lication level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                
 [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD
 ", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights re
 served.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.
 1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . .
  . . . . . . . . . . . . .  17\n       4.2.4.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n   
   6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . 
 . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4.  Request Type Overload Implications  . . . . . . . . .
  . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do
  not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) acti
 ons.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request o
 ther nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on beha
 lf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n
    (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely th
 e "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   
 receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n
 \n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as
 \n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not h
 ave fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This all
 ows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this 
 case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare 
 for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n 
   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   H
 ost reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter applica
 tion.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this docum
 ent (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This exte
 nsibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additi
 onal information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )
 --:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diame
 ter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.
   If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when 
 there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKor
 honen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features
  AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.1.3.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State 
 for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n
 \n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload conditi
 on has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   i
 s received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which 
 the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement a
 lgorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specif
 ic\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Gro
 uped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP i
 s greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a 
 previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when i
 t\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or
  multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control st
 ate cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.2.4.  Agent Behavior\n\n   Editor\'s note -- Need to add this section.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the n
 ew feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.  More specifically, the sub-AVPs inside the\n   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.\n   However, when overload control AVPs are piggybacked on top of an\n   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the 
 corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015           
      [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abat
 ement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, othe
 rwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer
  needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result o
 f the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n 
   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs\n   reused in newly defined Diameter appli
 cations SHOULD have the M-bit\n   flag set.  However, it is the responsibility of the Diameter\n   application designers to define how overload control mechanisms works\n   on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInte
 rnet-Draft                    DOIC                      October 2014\n\n\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  
 Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within 
 the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, mea
 sured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   
 nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n\n\n\nKorhonen, et al.         Expires April
  23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n  
  A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The
  value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches th
 e value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request
 ) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default valu
 e of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n   
    _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a g
 iven AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentic
 ation,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   cur
 rent status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.
   Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agen
 t fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it
 \'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   i
 s likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   req
 uests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potent
 ially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to 
 receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond th
 e scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet
 -Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the
  Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case 
 of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC so
 lution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   furth
 er divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an exam
 ple of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it 
 could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                    
   October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      to
 wards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter sessio
 n.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733
 ] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding thrott
 ling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft              
       DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to ma
 intain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]
 \n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------000504080006030503010108--


From nobody Mon Oct 20 04:54:25 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57FBC1A8700 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:54:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id g0E_3HNpmiHf for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:54:22 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A5E231A8034 for <dime@ietf.org>; Mon, 20 Oct 2014 04:54:22 -0700 (PDT)
Received: from localhost ([::1]:44901 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgBXX-0002mF-IC; Mon, 20 Oct 2014 04:54:19 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 11:54:19 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/66#comment:1
Message-ID: <072.365b5b87086f75644c491e8483853849@trac.tools.ietf.org>
References: <057.235f5e0676a095cce4d25acf9f348309@trac.tools.ietf.org>
X-Trac-Ticket-ID: 66
In-Reply-To: <057.235f5e0676a095cce4d25acf9f348309@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/tfTtIeYjRUXocnZnl283SILh4Ak
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #66 (draft-ietf-dime-ovli): Non-Supporting Agent Changing Origin-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:54:24 -0000

#66: Non-Supporting Agent Changing Origin-Host

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Agreed that the behavior of Topology Hiding agents/proxies is out of scope
 for this document.

 Added appendix on deployment consideration with the following wording:

    Topology hiding interactions

       There exist proxies that implement what is refered to as Topology
       Hiding.  This can include cases where the agent modifies the
       Origin-Host in answer messages.  The behavior of the DOIC solution
       is not well understood when this happens.  As such, the DOIC
       solution does not address this scenario.

-- 
-------------------------+-------------------------------------------------
 Reporter:               |       Owner:  draft-ietf-dime-
  ben@nostrum.com        |  ovli@tools.ietf.org
     Type:  defect       |      Status:  closed
 Priority:  major        |   Milestone:
Component:  draft-ietf-  |     Version:  2.0
  dime-ovli              |  Resolution:  fixed
 Severity:  Active WG    |
  Document               |
 Keywords:               |
-------------------------+-------------------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/66#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 04:58:56 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9866E1A86F7 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:56:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1I7wdU64Gvug for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 04:56:41 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E9BA61A8034 for <dime@ietf.org>; Mon, 20 Oct 2014 04:56:40 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:51553 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgBZm-000A1m-NF for dime@ietf.org; Mon, 20 Oct 2014 04:56:39 -0700
Message-ID: <5444F875.3050703@usdonovans.com>
Date: Mon, 20 Oct 2014 13:56:37 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------030807000405040100000606"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/00-czQ9lXa1WskIFl_W_Kz1bqak
X-Mailman-Approved-At: Mon, 20 Oct 2014 04:58:55 -0700
Subject: [Dime] Resolution to issue #66
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 11:56:44 -0000

This is a multi-part message in MIME format.
--------------030807000405040100000606
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have updated github with the changes for issue #66.

I added an appendix for "deployment considerations" for this issue and a 
non supporting agents issue.

The text can be found in the attached diff file.

Regards,

Steve

--------------030807000405040100000606
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 3, line 13</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 3, line 13</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td> </td><td class="right">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="rblock">   Appendix B.  <span class="insert">Deployment Considerations  . . . . . . . . . . . . .  33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Appendix C.</span>  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">B.1.</span>  Application Classification  . . . . . . . . . . . . . . .  33</td><td> </td><td class="rblock">     <span class="insert">C.1.</span>  Application Classification  . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">B.2.</span>  Application Type Overload Implications  . . . . . . . . .  34</td><td> </td><td class="rblock">     <span class="insert">C.2.</span>  Application Type Overload Implications  . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     <span class="delete">B.3.</span>  Request Transaction Classification  . . . . . . . . . . .  <span class="delete">35</span></td><td> </td><td class="rblock">     <span class="insert">C.3.</span>  Request Transaction Classification  . . . . . . . . . . .  <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     B.4.</span>  Request Type Overload Implications  . . . . . . . . . . .  36</td><td> </td><td class="rblock"><span class="insert">     C.4.</span>  Request Type Overload Implications  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">37</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">38</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 33, line 17</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 33, line 17</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is</td><td> </td><td class="right">   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   somewhat under specified.  For example, there is no information how</td><td> </td><td class="right">   somewhat under specified.  For example, there is no information how</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   long the specific Diameter node is willing to be unavailable.  A</td><td> </td><td class="right">   long the specific Diameter node is willing to be unavailable.  A</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification updating [RFC6733] should clarify the handling of</td><td> </td><td class="right">   specification updating [RFC6733] should clarify the handling of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   DIAMETER_TOO_BUSY from the error answer initiating Diameter node</td><td> </td><td class="right">   DIAMETER_TOO_BUSY from the error answer initiating Diameter node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   point of view and from the original request initiating Diameter node</td><td> </td><td class="right">   point of view and from the original request initiating Diameter node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   point of view.  Further, the inclusion of possible additional</td><td> </td><td class="right">   point of view.  Further, the inclusion of possible additional</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   information providing AVPs should be discussed and possible be</td><td> </td><td class="right">   information providing AVPs should be discussed and possible be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   recommended to be used.</td><td> </td><td class="right">   recommended to be used.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">Appendix B.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="rblock">Appendix B.  <span class="insert">Deployment Considerations</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Non supporting agents</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Due to the way that realm-routed requests are handled in Diameter</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      networks, with the server selection for the request done by an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      agent, it is recommended that deployments upgrade all agents with</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      direct connections to servers prior to enabling the DOIC solution</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      in the Diameter network.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Topology hiding interactions</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      There exist proxies that implement what is refered to as Topology</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Hiding.  This can include cases where the agent modifies the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Origin-Host in answer messages.  The behavior of the DOIC solution</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      is not well understood when this happens.  As such, the DOIC</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      solution does not address this scenario.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">Appendix C.</span>  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">             Solution</td><td> </td><td class="right">             Solution</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   THis section outlines considerations to be taken into account when</td><td> </td><td class="right">   THis section outlines considerations to be taken into account when</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   integrating the DOIC solution into Diameter applications.</td><td> </td><td class="right">   integrating the DOIC solution into Diameter applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">B</span>.1.  Application Classification</td><td> </td><td class="rblock"><span class="insert">C</span>.1.  Application Classification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following is a classification of Diameter applications and</td><td> </td><td class="right">   The following is a classification of Diameter applications and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requests.  This discussion is meant to document factors that play</td><td> </td><td class="right">   requests.  This discussion is meant to document factors that play</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   into decisions made by the Diameter identity responsible for handling</td><td> </td><td class="right">   into decisions made by the Diameter identity responsible for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports.</td><td> </td><td class="right">   overload reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td> </td><td class="right">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   types of applications, session-less and session-based applications.</td><td> </td><td class="right">   types of applications, session-less and session-based applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The primary difference between these types of applications is the</td><td> </td><td class="right">   The primary difference between these types of applications is the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   lifetime of Session-Ids.</td><td> </td><td class="right">   lifetime of Session-Ids.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 34, line 17</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 34, line 36</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Applications that do not rely on the Session-Id AVP for</td><td> </td><td class="right">      Applications that do not rely on the Session-Id AVP for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      correlation of application messages related to the same session</td><td> </td><td class="right">      correlation of application messages related to the same session</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      but use other session-related information in the Diameter requests</td><td> </td><td class="right">      but use other session-related information in the Diameter requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td> </td><td class="right">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      example of a pseudo-session application.</td><td> </td><td class="right">      example of a pseudo-session application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The Credit-Control application defined in [RFC4006] is an example of</td><td> </td><td class="right">   The Credit-Control application defined in [RFC4006] is an example of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   a Diameter session-based application.</td><td> </td><td class="right">   a Diameter session-based application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The handling of overload reports must take the type of application</td><td> </td><td class="right">   The handling of overload reports must take the type of application</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   into consideration, as discussed in Appendix <span class="delete">B</span>.2.</td><td> </td><td class="rblock">   into consideration, as discussed in Appendix <span class="insert">C</span>.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">B</span>.2.  Application Type Overload Implications</td><td> </td><td class="rblock"><span class="insert">C</span>.2.  Application Type Overload Implications</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section discusses considerations for mitigating overload</td><td> </td><td class="right">   This section discusses considerations for mitigating overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reported by a Diameter entity.  This discussion focuses on the type</td><td> </td><td class="right">   reported by a Diameter entity.  This discussion focuses on the type</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   of application.  Appendix <span class="delete">B</span>.3 discusses considerations for handling</td><td> </td><td class="rblock">   of application.  Appendix <span class="insert">C</span>.3 discusses considerations for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   various request types when the target server is known to be in an</td><td> </td><td class="right">   various request types when the target server is known to be in an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded state.</td><td> </td><td class="right">   overloaded state.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   These discussions assume that the strategy for mitigating the</td><td> </td><td class="right">   These discussions assume that the strategy for mitigating the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reported overload is to reduce the overall workload sent to the</td><td> </td><td class="right">   reported overload is to reduce the overall workload sent to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded entity.  The concept of applying overload treatment to</td><td> </td><td class="right">   overloaded entity.  The concept of applying overload treatment to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requests targeted for an overloaded Diameter entity is inherent to</td><td> </td><td class="right">   requests targeted for an overloaded Diameter entity is inherent to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   this discussion.  The method used to reduce offered load is not</td><td> </td><td class="right">   this discussion.  The method used to reduce offered load is not</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specified here but could include routing requests to another Diameter</td><td> </td><td class="right">   specified here but could include routing requests to another Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   entity known to be able to handle them, or it could mean rejecting</td><td> </td><td class="right">   entity known to be able to handle them, or it could mean rejecting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 35, line 32</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 36, line 5</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      towards an overloaded Diameter entity for a session-based</td><td> </td><td class="right">      towards an overloaded Diameter entity for a session-based</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      application might tend to reject new session requests prior to</td><td> </td><td class="right">      application might tend to reject new session requests prior to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      rejecting intra-session requests.  In addition, session ending</td><td> </td><td class="right">      rejecting intra-session requests.  In addition, session ending</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests might be given a lower probability of being rejected as</td><td> </td><td class="right">      requests might be given a lower probability of being rejected as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      rejecting session ending requests could result in session status</td><td> </td><td class="right">      rejecting session ending requests could result in session status</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      being out of sync between the Diameter clients and servers.</td><td> </td><td class="right">      being out of sync between the Diameter clients and servers.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Application designers that would decide to reject mid-session</td><td> </td><td class="right">      Application designers that would decide to reject mid-session</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests will need to consider whether the rejection invalidates</td><td> </td><td class="right">      requests will need to consider whether the rejection invalidates</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the session and any resulting session clean-up procedures.</td><td> </td><td class="right">      the session and any resulting session clean-up procedures.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">B</span>.3.  Request Transaction Classification</td><td> </td><td class="rblock"><span class="insert">C</span>.3.  Request Transaction Classification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Independent Request:</td><td> </td><td class="right">   Independent Request:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      An independent request is not correlated to any other requests</td><td> </td><td class="right">      An independent request is not correlated to any other requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      and, as such, the lifetime of the session-id is constrained to an</td><td> </td><td class="right">      and, as such, the lifetime of the session-id is constrained to an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      individual transaction.</td><td> </td><td class="right">      individual transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Session-Initiating Request:</td><td> </td><td class="right">   Session-Initiating Request:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      A session-initiating request is the initial message that</td><td> </td><td class="right">      A session-initiating request is the initial message that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 36, line 23</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 36, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Pseudo-Session Requests:</td><td> </td><td class="right">   Pseudo-Session Requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Pseudo-session requests are independent requests and do not use</td><td> </td><td class="right">      Pseudo-session requests are independent requests and do not use</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the same Session-Id but are correlated by other session-related</td><td> </td><td class="right">      the same Session-Id but are correlated by other session-related</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      information contained in the request.  There exists Diameter</td><td> </td><td class="right">      information contained in the request.  There exists Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      applications that define an expected ordering of transactions.</td><td> </td><td class="right">      applications that define an expected ordering of transactions.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      This sequencing of independent transactions results in a pseudo</td><td> </td><td class="right">      This sequencing of independent transactions results in a pseudo</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</td><td> </td><td class="right">      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      [Cx] application are examples of pseudo-session requests.</td><td> </td><td class="right">      [Cx] application are examples of pseudo-session requests.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">B</span>.4.  Request Type Overload Implications</td><td> </td><td class="rblock"><span class="insert">C</span>.4.  Request Type Overload Implications</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The request classes identified in Appendix <span class="delete">B</span>.3 have implications on</td><td> </td><td class="rblock">   The request classes identified in Appendix <span class="insert">C</span>.3 have implications on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   decisions about which requests should be throttled first.  The</td><td> </td><td class="right">   decisions about which requests should be throttled first.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   following list of request treatment regarding throttling is provided</td><td> </td><td class="right">   following list of request treatment regarding throttling is provided</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   as guidelines for application designers when implementing the</td><td> </td><td class="right">   as guidelines for application designers when implementing the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter overload control mechanism described in this document.  The</td><td> </td><td class="right">   Diameter overload control mechanism described in this document.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   exact behavior regarding throttling is a matter of local policy,</td><td> </td><td class="right">   exact behavior regarding throttling is a matter of local policy,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   unless specifically defined for the application.</td><td> </td><td class="right">   unless specifically defined for the application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Independent requests:</td><td> </td><td class="right">   Independent requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Independent requests can be given equal treatment when making</td><td> </td><td class="right">      Independent requests can be given equal treatment when making</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 10 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>14 lines changed or deleted</i></th><th><i> </i></th><th><i>33 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an acti
 ve overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.   
       Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR
  AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-t
 ype Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per
  supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control
  State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS i
 dentified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n 
   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-
 Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containi
 ng the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just
  a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there i
 s no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validi
 ty-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request mes
 sage.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when ov
 erload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting 
 node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   sho
 uld be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward 
 compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload s
 tate\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP 
 in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   in
 dicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   t
 he previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diam
 eter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of t
 he sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n 
   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this fl
 ag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR 
 ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP val
 ue.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Durati
 on AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   inv
 alidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for 
 which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the follow
 ing conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInter
 net-Draft                    DOIC                      October 2014\n\n\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatemen
 t algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                   
                                       _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  
 x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s 
 note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New
  types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between
  non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain action
 s, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload rep
 ort is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker cou
 ld use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all node
 s will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an over
 load control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that an
 y\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n
    in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words fo
 r use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Sc
 enarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future speci
 fication and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specificati
 on updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solut
 ion\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC           
            October 2014\n\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlati
 on of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded enti
 ty.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless ap
 plication.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions e
 arlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015         
        [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Req
 uest:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implicatio
 ns on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overlo
 ad control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n
       requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also b
 e application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status:
  Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in fu
 ll conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n
 _\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . 
 . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting
  Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . 
 . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n   
   A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     B.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     B.2.  Application Type Overload Implications  . . . . . . . . .  34\n     B.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     B.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding 
 design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n     
  Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report. 
  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes"
  and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send re
 quests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   c
 ombination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an en
 tire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part o
 f\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pa
 ss\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   R
 eporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any s
 erver\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in t
 he request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-F
 eature AVP.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request mess
 ages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Con
 dition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that 
 do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the 
 condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The
  reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC 
 solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified archite
 cture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indicati
 on\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA pr
 ocedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reac
 ting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content 
 of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use wh
 en the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An
  agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015        
         [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abate
 ment Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing
  an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) whe
 n receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,A
 lg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the
  first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST 
 use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, 
 et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the alg
 orithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any 
 abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further
  discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This a
 lgorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.
 \n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing
  applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC
 -Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  I
 t is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n     
   the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The 
 reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n 
      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of
  traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   
 mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used 
 to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC   
                    October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed
  by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a 
 specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point o
 f view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  Whe
 n the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to
  simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identi
 ty\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of th
 e\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different 
 "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to pr
 ocess any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT
 _\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feat
 ure-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al
 .         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This excha
 nge is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may
  traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways
  an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\
 n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\
 n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the over
 load\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may in
 sert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a p
 eer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a ris
 k that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch,
  "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Applicatio
 n", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 
 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\
 n   recommended to be used.\n\nAppendix B.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nB.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the 
 session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related in
 formation in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix B.2.\n\nB.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix B.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Dia
 meter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targ
 eted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applicatio
 ns:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nB.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such,
  the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the 
 one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nB.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix B.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of reque
 st treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given
  equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two
  classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   
 Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------030807000405040100000606--


From nobody Mon Oct 20 05:17:09 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 18B0C1A8545 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 05:17:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ih7LTxktGRHU for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 05:17:05 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 847401A8033 for <dime@ietf.org>; Mon, 20 Oct 2014 05:17:05 -0700 (PDT)
Received: from localhost ([::1]:46022 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgBtT-0007b4-RP; Mon, 20 Oct 2014 05:16:59 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 12:16:59 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/67#comment:1
Message-ID: <090.1087e6a5bc5310de84b729430627819a@trac.tools.ietf.org>
References: <075.8088ac7cf45248574468df6730350e07@trac.tools.ietf.org>
X-Trac-Ticket-ID: 67
In-Reply-To: <075.8088ac7cf45248574468df6730350e07@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/IF4Co7fRkQWSqHXtmIJHprfEr98
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #67 (draft-ietf-dime-ovli): OCS for Reporting Nodes - Expiry Time
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 12:17:07 -0000

#67: OCS for Reporting Nodes - Expiry Time

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 From notes:

 Summary: in the current text describing the OCS information elements, it
 is said that Validity Duration and expiry time need to maintained, whereas
 actually only the expiry time is required to manage the OCS, this
 information element derived from the validation time received in the OLR.

 output of the discussion:
 It was agreed that OCS information discussed in the draft is given as
 illustration of data required to manage the OCS in reporting/reacting node
 and this does not imply that each of information element needs to be
 locally stored. For instance, some data element can be derived from
 others.
 It was also discussed how many times a reporting node needs to send an OLR
 with the validation duration set to "0" to indicate that the overload
 situation is over. It was agreed that the reporting node has to send the
 OLR with validation duration "0" as long as all the reacting maintaining a
 corresponding active OCS have received the OLR. If there is a way for the
 reporting node to ensure that all the nodes will receive the OLR as soon
 as sent, the OLR can be sent only once.

 Changed one editor's note in section 4.2.1.3, removed the other editor's
 note.

 Added the following to section 4.2.3:

 All OLRs sent have an expiration time calculated by adding the
                         validity-duration contained in the OLR to the time
 the message was
                         sent. Transit time for the OLR can be safely
 ignored. The
                         reporting node can ensure that all reacting nodes
 have received
                         the OLR by continuing to send it in answer
 messages until the
                         expiration time for all OLRs sent for that
 overload contition have
                         expired.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/67#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 06:26:31 2014
Return-Path: <maria.cruz.bartolome@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6CE251A8797 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 06:26:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DD9XJHPDJWrz for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 06:26:25 -0700 (PDT)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D49341A8825 for <dime@ietf.org>; Mon, 20 Oct 2014 06:23:44 -0700 (PDT)
X-AuditID: c1b4fb30-f79e66d000000ff1-a2-54450cde42cb
Received: from ESESSHC010.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 5A.64.04081.EDC05445; Mon, 20 Oct 2014 15:23:42 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.145]) by ESESSHC010.ericsson.se ([153.88.183.48]) with mapi id 14.03.0174.001; Mon, 20 Oct 2014 15:23:42 +0200
From: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>
To: "dime@ietf.org" <dime@ietf.org>, "draft-ietf-dime-ovli@tools.ietf.org" <draft-ietf-dime-ovli@tools.ietf.org>, "srdonovan@usdonovans.com" <srdonovan@usdonovans.com>
Thread-Topic: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload report even if OC-OLR is not received
Thread-Index: AQHP7EKt/SarZzfqDECgPAD4qyDOpJw4+X4w
Date: Mon, 20 Oct 2014 13:23:42 +0000
Message-ID: <087A34937E64E74E848732CFF8354B920984E7B7@ESESSMB101.ericsson.se>
References: <075.42ce9b1c1c8c40b23a5717c66ad4bd65@trac.tools.ietf.org> <090.9ebd4d96e50723be516d374d27c082b4@trac.tools.ietf.org>
In-Reply-To: <090.9ebd4d96e50723be516d374d27c082b4@trac.tools.ietf.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.18]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLLMWRmVeSWpSXmKPExsUyM+Jvje49HtcQg/0TzS3m9q5gs1h+vIHZ YkMTjwOzx5IlP5k8vlz+zOax6m0fawBzFJdNSmpOZllqkb5dAlfGj8OtrAUbuSvubX7O2MD4 nqOLkZNDQsBEYvr0CewQtpjEhXvr2boYuTiEBI4ySvy7tZ0ZwlnCKLH77yZWkCo2ATuJS6df MIEkRARWM0pcOHKIGSQhLJAnsXfHbzYQW0QgX+LZxi9MELaRxLPeiywgNouAqsSzhndgcV4B X4lbrfuYIDY0M0osPXINrIhTwF2iZ+57RhCbEeim76fWgDUwC4hL3HoynwniVgGJJXvOM0PY ohIvH/9jhbAVJT6+2scIUa8jsWD3JzYIW1ti2cLXzBCLBSVOznzCMoFRdBaSsbOQtMxC0jIL ScsCRpZVjKLFqcVJuelGRnqpRZnJxcX5eXp5qSWbGIHxc3DLb4MdjC+fOx5iFOBgVOLhXZDj EiLEmlhWXJl7iFGag0VJnHfhuXnBQgLpiSWp2ampBalF8UWlOanFhxiZODilGhg3fI/eZCid zWayOtBRzqJ5hkEiJ0vmVjY5y4MVt+4d+vb3LeOHT+9zdnvVbbsX3Dj3y18OU+WVd2/HqEu7 PpBnOF7a28q1VrjwtGi+60WHKYtf+/j0Lc7hZWPN/+63dOmTCTKM7vm3p9Y3zN274d306Tsa jq/JvhNmdEmFtySqZE/r0+7GBEclluKMREMt5qLiRACrFBB0gAIAAA==
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/JA32QUVprHZNUKyb4wDSwU-NpYc
Subject: Re: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload report even if OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 13:26:27 -0000

Hello,

"suggested text" is not included in the ticket info
Regards
/MCruz

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
Sent: lunes, 20 de octubre de 2014 10:49
To: draft-ietf-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload repo=
rt even if OC-OLR is not received

#71: Active overload report even if OC-OLR is not received

Changes (by srdonovan@usdonovans.com):

 * status:  new =3D> closed
 * resolution:   =3D> fixed


Comment:

 Updated with the above suggested wording.

--=20
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/71#comment:1>
dime <http://tools.ietf.org/wg/dime/>

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime


From nobody Mon Oct 20 06:54:01 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EB90C1A8766 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 06:53:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.778
X-Spam-Level: 
X-Spam-Status: No, score=0.778 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zgRgBOeoSDYT for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 06:53:54 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CDF631A8725 for <dime@ietf.org>; Mon, 20 Oct 2014 06:53:26 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:52301 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgDOg-0007wn-O9; Mon, 20 Oct 2014 06:53:25 -0700
Message-ID: <544513CD.3030406@usdonovans.com>
Date: Mon, 20 Oct 2014 15:53:17 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>,  "dime@ietf.org" <dime@ietf.org>
References: <075.42ce9b1c1c8c40b23a5717c66ad4bd65@trac.tools.ietf.org> <090.9ebd4d96e50723be516d374d27c082b4@trac.tools.ietf.org> <087A34937E64E74E848732CFF8354B920984E7B7@ESESSMB101.ericsson.se>
In-Reply-To: <087A34937E64E74E848732CFF8354B920984E7B7@ESESSMB101.ericsson.se>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/AbXUtOzrD9RRCG53owcu4mWJPLY
Subject: Re: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload report even if OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 13:53:56 -0000

The update was based on the suggested wording in the problem report.

Steve

On 10/20/14, 3:23 PM, Maria Cruz Bartolome wrote:
> Hello,
>
> "suggested text" is not included in the ticket info
> Regards
> /MCruz
>
> -----Original Message-----
> From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of dime issue tracker
> Sent: lunes, 20 de octubre de 2014 10:49
> To: draft-ietf-dime-ovli@tools.ietf.org; srdonovan@usdonovans.com
> Cc: dime@ietf.org
> Subject: Re: [Dime] [dime] #71 (draft-ietf-dime-ovli): Active overload report even if OC-OLR is not received
>
> #71: Active overload report even if OC-OLR is not received
>
> Changes (by srdonovan@usdonovans.com):
>
>   * status:  new => closed
>   * resolution:   => fixed
>
>
> Comment:
>
>   Updated with the above suggested wording.
>


From nobody Mon Oct 20 07:23:24 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 748751A8881 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:23:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iwr0cshnHez6 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:23:18 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EBEE41A8883 for <dime@ietf.org>; Mon, 20 Oct 2014 07:07:12 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KE7BA7046640 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 09:07:12 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <072.365b5b87086f75644c491e8483853849@trac.tools.ietf.org>
Date: Mon, 20 Oct 2014 09:07:11 -0500
X-Mao-Original-Outgoing-Id: 435506831.566042-02a307fa33fec34cf14a823f274369d2
Content-Transfer-Encoding: quoted-printable
Message-Id: <8BAFA865-71FD-4020-993F-DF21005CD73B@nostrum.com>
References: <057.235f5e0676a095cce4d25acf9f348309@trac.tools.ietf.org> <072.365b5b87086f75644c491e8483853849@trac.tools.ietf.org>
To: dime@ietf.org
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/hO7W7d5nJ0DygY1dKhi6FpD2DzA
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #66 (draft-ietf-dime-ovli): Non-Supporting Agent Changing Origin-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 14:23:20 -0000

I thought we were going to distinguish between DOIC supporting and =
non-supporting proxies. Specifically, a DOIC supporting proxy that =
performs topology hiding needs to ensure that any OLRs are appropriate =
in the context of the answer in which they are sent.

> On Oct 20, 2014, at 6:54 AM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:
>=20
> #66: Non-Supporting Agent Changing Origin-Host
>=20
> Changes (by srdonovan@usdonovans.com):
>=20
> * status:  new =3D> closed
> * resolution:   =3D> fixed
>=20
>=20
> Comment:
>=20
> Agreed that the behavior of Topology Hiding agents/proxies is out of =
scope
> for this document.
>=20
> Added appendix on deployment consideration with the following wording:
>=20
>    Topology hiding interactions
>=20
>       There exist proxies that implement what is refered to as =
Topology
>       Hiding.  This can include cases where the agent modifies the
>       Origin-Host in answer messages.  The behavior of the DOIC =
solution
>       is not well understood when this happens.  As such, the DOIC
>       solution does not address this scenario.
>=20
> --=20
> =
-------------------------+------------------------------------------------=
-
> Reporter:               |       Owner:  draft-ietf-dime-
>  ben@nostrum.com        |  ovli@tools.ietf.org
>     Type:  defect       |      Status:  closed
> Priority:  major        |   Milestone:
> Component:  draft-ietf-  |     Version:  2.0
>  dime-ovli              |  Resolution:  fixed
> Severity:  Active WG    |
>  Document               |
> Keywords:               |
> =
-------------------------+------------------------------------------------=
-
>=20
> Ticket URL: =
<http://trac.tools.ietf.org/wg/dime/trac/ticket/66#comment:1>
> dime <http://tools.ietf.org/wg/dime/>
>=20


From nobody Mon Oct 20 07:26:27 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4E8931A8AC5 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:26:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vgk1y4ae3Jv8 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:26:17 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 239F41A8AC7 for <dime@ietf.org>; Mon, 20 Oct 2014 07:08:34 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KE8Xu8046755 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 09:08:33 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <090.79cda897b8f03e5e7b73357b5d1b2347@trac.tools.ietf.org>
Date: Mon, 20 Oct 2014 09:08:32 -0500
X-Mao-Original-Outgoing-Id: 435506912.883985-492390ce42cced9b9ea2d9baa7894368
Content-Transfer-Encoding: quoted-printable
Message-Id: <AE65BF53-7568-498D-A1A5-B3AA37E7A2CB@nostrum.com>
References: <075.67c19030c021c5f440170dd8f3f3c9a8@trac.tools.ietf.org> <090.79cda897b8f03e5e7b73357b5d1b2347@trac.tools.ietf.org>
To: dime@ietf.org
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/aJY4wuQv1cKDZ3cOD4hnRPOPdrU
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #72 (draft-ietf-dime-ovli): Reporting Node Behaviour when OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 14:26:22 -0000

I suggest changing "send" to "resend"

> On Oct 20, 2014, at 6:11 AM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:
>=20
> #72: Reporting Node Behaviour when OC-OLR is not received
>=20
> Changes (by srdonovan@usdonovans.com):
>=20
> * status:  new =3D> closed
> * resolution:   =3D> fixed
>=20
>=20
> Comment:
>=20
> Added the following to section 4.2.3 per previous email discussions:
>=20
>    A reporting node MAY choose to not send an overload report to a
>    reacting node if it can guarantee that this overload report is
>    already active in the reacting node.
>=20
>       Note - In some cases (e.g. when there are one or multiple agents
>       in the path between reporting and reacting nodes, or when =
overload
>       reports are discarded by reacting nodes) the reporting node may
>       not be able to guarantee that the reacting node has received the
>       report.
>=20
> Also changed wording in the loss section reporting node behavior =
section
> to refer to section 4.2.3.
>=20
> --=20
> =
-------------------------------------+------------------------------------=
-
> Reporter:                           |       Owner:  draft-ietf-dime-
>  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
>     Type:  enhancement              |      Status:  closed
> Priority:  minor                    |   Milestone:
> Component:  draft-ietf-dime-ovli     |     Version:
> Severity:  Active WG Document       |  Resolution:  fixed
> Keywords:                           |
> =
-------------------------------------+------------------------------------=
-
>=20
> Ticket URL: =
<http://trac.tools.ietf.org/wg/dime/trac/ticket/72#comment:1>
> dime <http://tools.ietf.org/wg/dime/>
>=20


From nobody Mon Oct 20 07:40:55 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 91BB71A908B for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:40:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id w1myQqeFd5ZT for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 07:40:41 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4F7721A87D7 for <dime@ietf.org>; Mon, 20 Oct 2014 07:18:44 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KEIhg2052344 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 09:18:43 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <081.59481ca83ddcf9ab4a68dda3859e21ec@trac.tools.ietf.org>
Date: Mon, 20 Oct 2014 09:18:43 -0500
X-Mao-Original-Outgoing-Id: 435507523.0472-20b908177f01d241fbd4435b9da8ca8b
Content-Transfer-Encoding: quoted-printable
Message-Id: <7351BCD3-8FF0-4485-9110-66C3C07CBB06@nostrum.com>
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org> <081.59481ca83ddcf9ab4a68dda3859e21ec@trac.tools.ietf.org>
To: dime@ietf.org
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/YEF4bVL7sxklF3bdcA7Nonqlglo
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 14:40:45 -0000

I think the guidance of agents sending unable-to-comply and servers =
sending too-busy needs to be pointed out as "typical". There may be =
cases where the opposites make sense, e.g., if an agent has reason to =
think an alternate route may be ok (as in agent-overload), it might send =
too-busy. If a server has reason to believe that the request should not =
be retried, it can send unable-to-comply.

It's probably best to state this generically based on the expected =
result (retrying on different route vs final error.), and then describe =
"typical" behavior for agents and servers.

> On Oct 20, 2014, at 1:38 AM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:
>=20
> #85: New error response
>=20
>=20
> Comment (by srdonovan@usdonovans.com):
>=20
> Raw notes taken from discussion at interim meeting:
>=20
> Requirements
>=20
> =E2=80=A2       Current Too-Busy behavior allows for retry
> =E2=80=A2       Too-Busy was originally defined to have a per =
connection scope
> =E2=80=A2       MUST only be used when a specific server exists
> o       This might mean that Too-Busy cannot be used for the throttle
> error without updating the definition of Too-Busy behavior
> =E2=80=A2       Unable-to-deliver might be another alternative for =
throttling
> behavior
>=20
> =E2=80=A2       Need new error response behavior =E2=80=93 DOIC needs =
error response
> behavior to prevent retries due to the message being throttled.
>=20
> =E2=80=A2       Need to handle case where transaction client supports =
the
> throttling error behavior and for transaction clients that do not =
support
> the throttling error behavior.
>=20
> Proposal: Use Unable-to-Comply error code when throttling by agent, =
too-
> busy when throttling by server
>=20
> Use case where agent is reacting node =E2=80=93 throttled messages =
should result
> in Unable-to-Comply
>=20
> Use case =E2=80=93 agent throttling when client supports DOIC =
unable-to-comply
> also works
>=20
> Use case =E2=80=93 Server throttling =E2=80=93 too-busy works
>=20
> Could add optional =E2=80=9Cerror-diagnostic AVP=E2=80=9D to indicate =
the reason for
> unable-to-comply =E2=80=93 should be addressed in a separate RFC
>=20
> --=20
> =
-------------------------------------+------------------------------------=
-
> Reporter:                           |       Owner:  draft-ietf-dime-
>  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
>     Type:  defect                   |      Status:  new
> Priority:  major                    |   Milestone:
> Component:  draft-ietf-dime-ovli     |     Version:
> Severity:  Active WG Document       |  Resolution:
> Keywords:                           |
> =
-------------------------------------+------------------------------------=
-
>=20
> Ticket URL: =
<http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:1>
> dime <http://tools.ietf.org/wg/dime/>
>=20


From nobody Mon Oct 20 09:26:09 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A64CF1A8A58 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:26:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HlfrFJrafoCP for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:26:06 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 50CE71A6F59 for <dime@ietf.org>; Mon, 20 Oct 2014 09:20:44 -0700 (PDT)
Received: from localhost ([::1]:59846 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgFhB-0006aN-HS; Mon, 20 Oct 2014 09:20:33 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 16:20:33 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/82#comment:1
Message-ID: <081.2761be74612d114c8d5fb57b0dbb104d@trac.tools.ietf.org>
References: <066.d3ed74d24b21e564d1e8254e3d1cbd6d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 82
In-Reply-To: <066.d3ed74d24b21e564d1e8254e3d1cbd6d@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/8oqBtB80m18nis6zJK_dBI79Jrc
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #82 (draft-ietf-dime-ovli): 6.4. OC-Sequence-Number AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 16:26:07 -0000

#82: 6.4.  OC-Sequence-Number AVP

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Changed to the following:

         From the functionality point of view, the OC-Sequence-Number AVP
 MUST
          be used as a non-volatile increasing counter for a sequence of
 overload reports
          between two DOIC nodes for the same overload occurance.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/82#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 09:46:01 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A98731A8762 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:45:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8wI97WvNA17H for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:45:58 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 51C511A88C0 for <dime@ietf.org>; Mon, 20 Oct 2014 09:32:24 -0700 (PDT)
Received: from localhost ([::1]:60240 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgFsY-0000r1-4k; Mon, 20 Oct 2014 09:32:18 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Mon, 20 Oct 2014 16:32:18 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/80#comment:1
Message-ID: <081.dc734617273a0925cac7b1f9b5e93e03@trac.tools.ietf.org>
References: <066.5539af770d4d4b42fb59894a29e8524f@trac.tools.ietf.org>
X-Trac-Ticket-ID: 80
In-Reply-To: <066.5539af770d4d4b42fb59894a29e8524f@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/uko82jbtWNm92egS2HtZeo19mAw
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #80 (draft-ietf-dime-ovli): 6.1. OC-Supported-Features AVP
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 16:45:59 -0000

#80: 6.1.  OC-Supported-Features AVP

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Moved behavior to capability announcement section.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/80#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Mon Oct 20 09:51:39 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E74F1A86F4 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:51:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FsY2hAOxBVib for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:51:36 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E4CB41A86F8 for <dime@ietf.org>; Mon, 20 Oct 2014 09:37:03 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53081 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgFx6-0000Ct-NG; Mon, 20 Oct 2014 09:37:02 -0700
Message-ID: <54453A2B.4030008@usdonovans.com>
Date: Mon, 20 Oct 2014 18:36:59 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>, dime@ietf.org
References: <075.67c19030c021c5f440170dd8f3f3c9a8@trac.tools.ietf.org> <090.79cda897b8f03e5e7b73357b5d1b2347@trac.tools.ietf.org> <AE65BF53-7568-498D-A1A5-B3AA37E7A2CB@nostrum.com>
In-Reply-To: <AE65BF53-7568-498D-A1A5-B3AA37E7A2CB@nostrum.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/BiEYdNRFc3ATsNDksgFUmCQTqRY
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #72 (draft-ietf-dime-ovli): Reporting Node Behaviour when OC-OLR is not received
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 16:51:37 -0000

Changed as suggested in the latest set of updates, as I happened to be 
in that section.

Steve

On 10/20/14, 4:08 PM, Ben Campbell wrote:
> I suggest changing "send" to "resend"
>
>> On Oct 20, 2014, at 6:11 AM, dime issue tracker <trac+dime@zinfandel.tools.ietf.org> wrote:
>>
>> #72: Reporting Node Behaviour when OC-OLR is not received
>>
>> Changes (by srdonovan@usdonovans.com):
>>
>> * status:  new => closed
>> * resolution:   => fixed
>>
>>
>> Comment:
>>
>> Added the following to section 4.2.3 per previous email discussions:
>>
>>     A reporting node MAY choose to not send an overload report to a
>>     reacting node if it can guarantee that this overload report is
>>     already active in the reacting node.
>>
>>        Note - In some cases (e.g. when there are one or multiple agents
>>        in the path between reporting and reacting nodes, or when overload
>>        reports are discarded by reacting nodes) the reporting node may
>>        not be able to guarantee that the reacting node has received the
>>        report.
>>
>> Also changed wording in the loss section reporting node behavior section
>> to refer to section 4.2.3.
>>
>> -- 
>> -------------------------------------+-------------------------------------
>> Reporter:                           |       Owner:  draft-ietf-dime-
>>   maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
>>      Type:  enhancement              |      Status:  closed
>> Priority:  minor                    |   Milestone:
>> Component:  draft-ietf-dime-ovli     |     Version:
>> Severity:  Active WG Document       |  Resolution:  fixed
>> Keywords:                           |
>> -------------------------------------+-------------------------------------
>>
>> Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/72#comment:1>
>> dime <http://tools.ietf.org/wg/dime/>
>>
>


From nobody Mon Oct 20 10:09:55 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D7E941A7014 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:09:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ihg1Q7K-SxCj for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:09:46 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 696811A6F15 for <dime@ietf.org>; Mon, 20 Oct 2014 09:59:36 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53111 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgGIm-0009NV-Ec; Mon, 20 Oct 2014 09:59:27 -0700
Message-ID: <54453F6B.1070502@usdonovans.com>
Date: Mon, 20 Oct 2014 18:59:23 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>, dime@ietf.org
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org> <081.59481ca83ddcf9ab4a68dda3859e21ec@trac.tools.ietf.org> <7351BCD3-8FF0-4485-9110-66C3C07CBB06@nostrum.com>
In-Reply-To: <7351BCD3-8FF0-4485-9110-66C3C07CBB06@nostrum.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/I66aRD6vijgf2RLH6h8HhsD2Fl8
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 17:09:48 -0000

Ben,

I attempted to treat them generically in the separate email I sent with 
the title "[Dime] Proposal for error response wording (issue 85)".

Does that address your concern?

Steve

On 10/20/14, 4:18 PM, Ben Campbell wrote:
> I think the guidance of agents sending unable-to-comply and servers sending too-busy needs to be pointed out as "typical". There may be cases where the opposites make sense, e.g., if an agent has reason to think an alternate route may be ok (as in agent-overload), it might send too-busy. If a server has reason to believe that the request should not be retried, it can send unable-to-comply.
>
> It's probably best to state this generically based on the expected result (retrying on different route vs final error.), and then describe "typical" behavior for agents and servers.
>
>> On Oct 20, 2014, at 1:38 AM, dime issue tracker <trac+dime@zinfandel.tools.ietf.org> wrote:
>>
>> #85: New error response
>>
>>
>> Comment (by srdonovan@usdonovans.com):
>>
>> Raw notes taken from discussion at interim meeting:
>>
>> Requirements
>>
>> â€¢       Current Too-Busy behavior allows for retry
>> â€¢       Too-Busy was originally defined to have a per connection scope
>> â€¢       MUST only be used when a specific server exists
>> o       This might mean that Too-Busy cannot be used for the throttle
>> error without updating the definition of Too-Busy behavior
>> â€¢       Unable-to-deliver might be another alternative for throttling
>> behavior
>>
>> â€¢       Need new error response behavior â€“ DOIC needs error response
>> behavior to prevent retries due to the message being throttled.
>>
>> â€¢       Need to handle case where transaction client supports the
>> throttling error behavior and for transaction clients that do not support
>> the throttling error behavior.
>>
>> Proposal: Use Unable-to-Comply error code when throttling by agent, too-
>> busy when throttling by server
>>
>> Use case where agent is reacting node â€“ throttled messages should result
>> in Unable-to-Comply
>>
>> Use case â€“ agent throttling when client supports DOIC unable-to-comply
>> also works
>>
>> Use case â€“ Server throttling â€“ too-busy works
>>
>> Could add optional â€œerror-diagnostic AVPâ€ to indicate the reason for
>> unable-to-comply â€“ should be addressed in a separate RFC
>>
>> -- 
>> -------------------------------------+-------------------------------------
>> Reporter:                           |       Owner:  draft-ietf-dime-
>>   srdonovan@usdonovans.com           |  ovli@tools.ietf.org
>>      Type:  defect                   |      Status:  new
>> Priority:  major                    |   Milestone:
>> Component:  draft-ietf-dime-ovli     |     Version:
>> Severity:  Active WG Document       |  Resolution:
>> Keywords:                           |
>> -------------------------------------+-------------------------------------
>>
>> Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:1>
>> dime <http://tools.ietf.org/wg/dime/>
>>
>


From nobody Mon Oct 20 10:12:03 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C3C351A887C for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:12:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q-mTMUDk3dgL for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:12:00 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D64D61A88DE for <dime@ietf.org>; Mon, 20 Oct 2014 10:01:08 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53112 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgGKN-000BA1-TM; Mon, 20 Oct 2014 10:01:07 -0700
Message-ID: <54453FCE.40308@usdonovans.com>
Date: Mon, 20 Oct 2014 19:01:02 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>, dime@ietf.org
References: <057.235f5e0676a095cce4d25acf9f348309@trac.tools.ietf.org> <072.365b5b87086f75644c491e8483853849@trac.tools.ietf.org> <8BAFA865-71FD-4020-993F-DF21005CD73B@nostrum.com>
In-Reply-To: <8BAFA865-71FD-4020-993F-DF21005CD73B@nostrum.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/E5cUJxpxrCGxP2bEX0qYdJY7K14
Cc: draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #66 (draft-ietf-dime-ovli): Non-Supporting Agent Changing Origin-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 17:12:01 -0000

That is something we talked about.  I'll add it to the deployment 
considerations section if there are no objections.

Steve

On 10/20/14, 4:07 PM, Ben Campbell wrote:
> I thought we were going to distinguish between DOIC supporting and non-supporting proxies. Specifically, a DOIC supporting proxy that performs topology hiding needs to ensure that any OLRs are appropriate in the context of the answer in which they are sent.
>
>> On Oct 20, 2014, at 6:54 AM, dime issue tracker <trac+dime@zinfandel.tools.ietf.org> wrote:
>>
>> #66: Non-Supporting Agent Changing Origin-Host
>>
>> Changes (by srdonovan@usdonovans.com):
>>
>> * status:  new => closed
>> * resolution:   => fixed
>>
>>
>> Comment:
>>
>> Agreed that the behavior of Topology Hiding agents/proxies is out of scope
>> for this document.
>>
>> Added appendix on deployment consideration with the following wording:
>>
>>     Topology hiding interactions
>>
>>        There exist proxies that implement what is refered to as Topology
>>        Hiding.  This can include cases where the agent modifies the
>>        Origin-Host in answer messages.  The behavior of the DOIC solution
>>        is not well understood when this happens.  As such, the DOIC
>>        solution does not address this scenario.
>>
>> -- 
>> -------------------------+-------------------------------------------------
>> Reporter:               |       Owner:  draft-ietf-dime-
>>   ben@nostrum.com        |  ovli@tools.ietf.org
>>      Type:  defect       |      Status:  closed
>> Priority:  major        |   Milestone:
>> Component:  draft-ietf-  |     Version:  2.0
>>   dime-ovli              |  Resolution:  fixed
>> Severity:  Active WG    |
>>   Document               |
>> Keywords:               |
>> -------------------------+-------------------------------------------------
>>
>> Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/66#comment:1>
>> dime <http://tools.ietf.org/wg/dime/>
>>
>


From nobody Mon Oct 20 10:13:26 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6CF4F1A889F for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:13:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aYim3eyKtU-J for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:13:01 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 639B21A8900 for <dime@ietf.org>; Mon, 20 Oct 2014 10:02:04 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KH22q7092626 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 12:02:03 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <54453F6B.1070502@usdonovans.com>
Date: Mon, 20 Oct 2014 12:02:02 -0500
X-Mao-Original-Outgoing-Id: 435517322.666406-95f090c6f09061c43976f81b2c1e7af1
Content-Transfer-Encoding: quoted-printable
Message-Id: <5A1EF972-C8C8-405E-8FD4-8E75C3E6FF61@nostrum.com>
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org> <081.59481ca83ddcf9ab4a68dda3859e21ec@trac.tools.ietf.org> <7351BCD3-8FF0-4485-9110-66C3C07CBB06@nostrum.com> <54453F6B.1070502@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/uk6-gb9Sb52eu8DUv5tJrFmOiq0
Cc: dime@ietf.org, draft-ietf-dime-ovli@tools.ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 17:13:09 -0000

Not really. I will respond to that email separately.

> On Oct 20, 2014, at 11:59 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> Ben,
>=20
> I attempted to treat them generically in the separate email I sent =
with the title "[Dime] Proposal for error response wording (issue 85)".
>=20
> Does that address your concern?
>=20
> Steve
>=20
> On 10/20/14, 4:18 PM, Ben Campbell wrote:
>> I think the guidance of agents sending unable-to-comply and servers =
sending too-busy needs to be pointed out as "typical". There may be =
cases where the opposites make sense, e.g., if an agent has reason to =
think an alternate route may be ok (as in agent-overload), it might send =
too-busy. If a server has reason to believe that the request should not =
be retried, it can send unable-to-comply.
>>=20
>> It's probably best to state this generically based on the expected =
result (retrying on different route vs final error.), and then describe =
"typical" behavior for agents and servers.
>>=20
>>> On Oct 20, 2014, at 1:38 AM, dime issue tracker =
<trac+dime@zinfandel.tools.ietf.org> wrote:
>>>=20
>>> #85: New error response
>>>=20
>>>=20
>>> Comment (by srdonovan@usdonovans.com):
>>>=20
>>> Raw notes taken from discussion at interim meeting:
>>>=20
>>> Requirements
>>>=20
>>> =E2=80=A2       Current Too-Busy behavior allows for retry
>>> =E2=80=A2       Too-Busy was originally defined to have a per =
connection scope
>>> =E2=80=A2       MUST only be used when a specific server exists
>>> o       This might mean that Too-Busy cannot be used for the =
throttle
>>> error without updating the definition of Too-Busy behavior
>>> =E2=80=A2       Unable-to-deliver might be another alternative for =
throttling
>>> behavior
>>>=20
>>> =E2=80=A2       Need new error response behavior =E2=80=93 DOIC =
needs error response
>>> behavior to prevent retries due to the message being throttled.
>>>=20
>>> =E2=80=A2       Need to handle case where transaction client =
supports the
>>> throttling error behavior and for transaction clients that do not =
support
>>> the throttling error behavior.
>>>=20
>>> Proposal: Use Unable-to-Comply error code when throttling by agent, =
too-
>>> busy when throttling by server
>>>=20
>>> Use case where agent is reacting node =E2=80=93 throttled messages =
should result
>>> in Unable-to-Comply
>>>=20
>>> Use case =E2=80=93 agent throttling when client supports DOIC =
unable-to-comply
>>> also works
>>>=20
>>> Use case =E2=80=93 Server throttling =E2=80=93 too-busy works
>>>=20
>>> Could add optional =E2=80=9Cerror-diagnostic AVP=E2=80=9D to =
indicate the reason for
>>> unable-to-comply =E2=80=93 should be addressed in a separate RFC
>>>=20
>>> --=20
>>> =
-------------------------------------+------------------------------------=
-
>>> Reporter:                           |       Owner:  draft-ietf-dime-
>>>  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
>>>     Type:  defect                   |      Status:  new
>>> Priority:  major                    |   Milestone:
>>> Component:  draft-ietf-dime-ovli     |     Version:
>>> Severity:  Active WG Document       |  Resolution:
>>> Keywords:                           |
>>> =
-------------------------------------+------------------------------------=
-
>>>=20
>>> Ticket URL: =
<http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:1>
>>> dime <http://tools.ietf.org/wg/dime/>
>>>=20
>>=20
>=20


From nobody Mon Oct 20 10:18:08 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C84DF1A87AF for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:18:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nLaStzCWAXtf for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:18:04 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 877381A0A6A for <dime@ietf.org>; Mon, 20 Oct 2014 10:10:19 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KHAIsP093372 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 12:10:19 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <5444E8B9.8090002@usdonovans.com>
Date: Mon, 20 Oct 2014 12:10:17 -0500
X-Mao-Original-Outgoing-Id: 435517817.935341-8eb009c7aa22317cdffcb233e25bc0f4
Content-Transfer-Encoding: quoted-printable
Message-Id: <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/qL2ds2wxJmTKr56tIF29G4vyT88
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 17:18:06 -0000

I agree that we should generalize these, but I think the direction is =
not quite right. More inline:

> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> We came to the following agreements on error responses:
>=20
> - Servers rejecting a Diameter request due to an overload condition =
should send a 3002 DIAMETER_TOO_BUSY error response.
>=20
> - Agents rejecting a Diameter request due to an overload condition =
should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>=20
> I propose that we generalize this to the following:
>=20
> - Reporting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>=20
> - Reacting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a UNABLE-TO-COMPLY.

I don't think we should state this in terms of reaction and reporting =
nodes. I think we should generalize to expected behavior. Also, in the =
case where the downstream node does not support DOIC, I'm not sure it =
makes sense to say the throttling node is really a reporting node (for =
that particular relationship.)

My suggestion is we say that, if the throttling node has sufficient =
information to determine that the request is not likely to succeed if =
retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not =
have that information, it SHOULD send TOO-BUSY.   (we should discuss why =
this is not a MUST if we have the conditionals in place.)

Then we could go on to say that a reaction node (or agent) would =
typically fall under the first category, and a reporting node (or =
server) would typically fall under the second. But there certainly may =
be cases where a reacting node does not know if other paths could work, =
and where a reporting node might know that they couldn't.=20


>=20
> This would mean that an agent acting as a reporting node (i.e.; server =
doesn't support DOIC or agent is acting as a server front end) would =
sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; =
a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY =
response.
>=20
> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on =
agent behavior will be deleted.
>=20
> I will hold off making this change until tomorrow (Tuesday morning).
>=20
> Regards,
>=20
> Steve
>=20
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


From nobody Mon Oct 20 12:57:17 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D222E1ACD73 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 12:57:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SOKA58Bi48oW for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 12:57:14 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E142B1ACD6A for <dime@ietf.org>; Mon, 20 Oct 2014 12:57:13 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KJvCJm008892 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 14:57:13 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
From: Ben Campbell <ben@nostrum.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_57E684A6-AE27-435E-B00D-3B4D1A7D0803"
X-Mao-Original-Outgoing-Id: 435527831.921899-8d0464e57181478c678dc6a645e83daf
Message-Id: <7A2FFE7D-41BB-43E8-95E2-7B63FC7E6A46@nostrum.com>
Date: Mon, 20 Oct 2014 14:57:11 -0500
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
To: "dime@ietf.org list" <dime@ietf.org>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/pFoZ9nZ1POFVwi3KEkBEQBF4Hgw
Subject: [Dime] Proposed Text for Issue 43
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 19:57:16 -0000

--Apple-Mail=_57E684A6-AE27-435E-B00D-3B4D1A7D0803
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Steve reminded me I owned some text on issue 43. The existing text has =
moved to 3.6.4 in 04, but I think it stayed the same. Here are some =
proposed updates:

Thanks!

Ben.

--------------------

general:=20

Section headings (even unnumbered ones) should be in title case. Colon =
missing from =E2=80=9CIntra-Session Request=E2=80=9D heading.


Independent Request Section:

Old:

Independent requests can be given equal treatment when making throttling =
decisions.

New:

Independent requests can generally be given equal treatment when making =
throttling decisions, unless otherwise indicated by application =
requirements or local policy.

Session-Initiating Requests:

Old:

Session-initiating requests represent more work than independent or =
intra-session requests.  Moreover, session-initiating requests are =
typically followed by other session-related requests.  As such, as the =
main objective of the overload control is to reduce the total number of =
requests sent to the overloaded entity, throttling decisions might favor =
allowing intra-session requests over session-initiating requests.  =
Individual session-initiating requests can be given equal treatment when =
making throttling decisions.

New:

Session-initiating requests often represent more work than independent =
or intra-session requests.  Moreover, session-initiating requests are =
typically followed by other session-related requests.  Since the main =
objective of the overload control is to reduce the total number of =
requests sent to the overloaded entity, throttling decisions might favor =
allowing intra-session requests over session-initiating requests.  In =
the absence of local policies or application specific requirements to =
the contrary, Individual session-initiating requests can be given equal =
treatment when making throttling decisions.

Correlated Session-Initiationg Requests and Pseudo-session requests =
sections:

[Existing text is fine as is]

Intra-Session Requests:

Old:

There are two classes of intra-sessions requests.  The first class =
consists of requests that terminate a session.  The second one contains =
the set of requests that are used by the Diameter client and server to =
maintain the ongoing session state.  Session terminating requests should =
be throttled less aggressively in order to gracefully terminate =
sessions, allow clean-up of the related resources (e.g. session state) =
and get rid of the need for other intra-session requests, reducing the =
session management impact on the overloaded entity.  The default =
handling of other intra-session requests might be to treat them equally =
when making throttling decisions.  There might also be application level =
considerations whether some request types are favored over others.

New:
There are two classes of intra-sessions requests.  The first class =
consists of requests that terminate a session.  The second class =
comprises requests that are used by the Diameter client and server to =
maintain the ongoing session state.  Implementors and operators may =
choose to throttle session-terminating requests less aggressively in =
order to gracefully terminate sessions, allow clean-up of the related =
resources (e.g. session state) and avoid the need for additional =
intra-session requests. Favoring session-termination requests may reduce =
the session management impact on the overloaded entity.  The default =
handling of other intra-session requests might be to treat them equally =
when making throttling decisions.  There might also be application level =
considerations whether some request types are favored over others.








--Apple-Mail=_57E684A6-AE27-435E-B00D-3B4D1A7D0803
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Steve reminded me I owned some text on issue 43. The existing =
text has moved to 3.6.4 in 04, but I think it stayed the same. Here are =
some proposed updates:<div class=3D""><br class=3D""></div><div =
class=3D"">Thanks!</div><div class=3D""><br class=3D""></div><div =
class=3D"">Ben.</div><div class=3D""><br class=3D""></div><div =
class=3D"">--------------------<br class=3D""><div class=3D""><br =
class=3D""></div><div class=3D"">general:&nbsp;</div><div class=3D""><br =
class=3D""></div><blockquote style=3D"margin: 0 0 0 40px; border: none; =
padding: 0px;" class=3D""><div class=3D"">Section headings (even =
unnumbered ones) should be in title case. Colon missing from =
=E2=80=9CIntra-Session Request=E2=80=9D heading.</div></blockquote><div =
class=3D""><br class=3D""></div><div class=3D""><br class=3D""></div><div =
class=3D"">Independent Request Section:</div><div class=3D""><br =
class=3D""></div><div class=3D"">Old:</div><div class=3D""><br =
class=3D""></div><blockquote style=3D"margin: 0 0 0 40px; border: none; =
padding: 0px;" class=3D""><div class=3D"">Independent requests can be =
given equal treatment when making throttling =
decisions.</div></blockquote><div class=3D""><br class=3D""></div><div =
class=3D"">New:</div><div class=3D""><br class=3D""></div><blockquote =
style=3D"margin: 0 0 0 40px; border: none; padding: 0px;" class=3D""><div =
class=3D"">Independent requests can generally be given equal treatment =
when making throttling decisions, unless otherwise indicated by =
application requirements or local policy.</div><div class=3D""><br =
class=3D""></div></blockquote>Session-Initiating Requests:<div =
class=3D""><br class=3D""></div><div class=3D"">Old:</div><div =
class=3D""><br class=3D""></div><blockquote style=3D"margin: 0 0 0 40px; =
border: none; padding: 0px;" class=3D""><div class=3D"">Session-initiating=
 requests represent more work than independent or intra-session =
requests. &nbsp;Moreover, session-initiating requests are typically =
followed by other session-related requests. &nbsp;As such, as the main =
objective of the overload control is to reduce the total number of =
requests sent to the overloaded entity, throttling decisions might favor =
allowing intra-session requests over session-initiating requests. =
&nbsp;Individual session-initiating requests can be given equal =
treatment when making throttling decisions.</div><div class=3D""><br =
class=3D""></div></blockquote>New:<div class=3D""><br =
class=3D""></div><div class=3D""><blockquote style=3D"margin: 0px 0px =
0px 40px; border: none; padding: 0px;" class=3D"">Session-initiating =
requests often represent more work than independent or intra-session =
requests. &nbsp;Moreover, session-initiating requests are typically =
followed by other session-related requests. &nbsp;Since the main =
objective of the overload control is to reduce the total number of =
requests sent to the overloaded entity, throttling decisions might favor =
allowing intra-session requests over session-initiating requests. =
&nbsp;In the absence of local policies or application specific =
requirements to the contrary, Individual session-initiating requests can =
be given equal treatment when making throttling =
decisions.</blockquote><blockquote style=3D"margin: 0px 0px 0px 40px; =
border: none; padding: 0px;" class=3D""><br =
class=3D""></blockquote>Correlated Session-Initiationg Requests and =
Pseudo-session requests sections:</div><div class=3D""><br =
class=3D""></div><blockquote style=3D"margin: 0 0 0 40px; border: none; =
padding: 0px;" class=3D""><div class=3D"">[Existing text is fine as =
is]</div></blockquote><div class=3D""><br class=3D""></div><div =
class=3D"">Intra-Session Requests:</div><div class=3D""><br =
class=3D""></div><div class=3D"">Old:</div><div class=3D""><br =
class=3D""></div><blockquote style=3D"margin: 0 0 0 40px; border: none; =
padding: 0px;" class=3D""><div class=3D"">There are two classes of =
intra-sessions requests. &nbsp;The first class consists of requests that =
terminate a session. &nbsp;The second one contains the set of requests =
that are used by the Diameter client and server to maintain the ongoing =
session state. &nbsp;Session terminating requests should be throttled =
less aggressively in order to gracefully terminate sessions, allow =
clean-up of the related resources (e.g. session state) and get rid of =
the need for other intra-session requests, reducing the session =
management impact on the overloaded entity. &nbsp;The default handling =
of other intra-session requests might be to treat them equally when =
making throttling decisions. &nbsp;There might also be application level =
considerations whether some request types are favored over =
others.</div></blockquote><div class=3D""><br class=3D""></div><div =
class=3D"">New:</div><div class=3D""><blockquote style=3D"margin: 0px =
0px 0px 40px; border: none; padding: 0px;" class=3D"">There are two =
classes of intra-sessions requests. &nbsp;The first class consists of =
requests that terminate a session. &nbsp;The second class comprises =
requests that are used by the Diameter client and server to maintain the =
ongoing session state. &nbsp;Implementors and operators may choose to =
throttle session-terminating requests less aggressively in order to =
gracefully terminate sessions, allow clean-up of the related resources =
(e.g. session state) and avoid the need for additional intra-session =
requests. Favoring session-termination requests may reduce the session =
management impact on the overloaded entity. &nbsp;The default handling =
of other intra-session requests might be to treat them equally when =
making throttling decisions. &nbsp;There might also be application level =
considerations whether some request types are favored over =
others.</blockquote></div><div class=3D""><br class=3D""></div><div =
class=3D""><br class=3D""></div><div class=3D""><br class=3D""></div><div =
class=3D""><br class=3D""></div><div class=3D""><br class=3D""><div =
class=3D""></div><div class=3D""><div class=3D""><br class=3D""></div><div=
 class=3D""><br class=3D""></div></div></div></div></body></html>=

--Apple-Mail=_57E684A6-AE27-435E-B00D-3B4D1A7D0803--


From nobody Mon Oct 20 14:17:08 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D14EC1ACEE0 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 14:17:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id J5QPvRZFoUBX for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 14:17:04 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3694D1ACEDB for <dime@ietf.org>; Mon, 20 Oct 2014 14:17:04 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KLH2FD015947 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 16:17:03 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <5444D8F9.9040906@usdonovans.com>
Date: Mon, 20 Oct 2014 16:17:02 -0500
X-Mao-Original-Outgoing-Id: 435532622.221494-1d40a600f00122b9ee729e1590b213c4
Content-Transfer-Encoding: quoted-printable
Message-Id: <D728C623-D8EE-4767-BC74-52233429E1FC@nostrum.com>
References: <5444D8F9.9040906@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/yDDxsPUC28F0Ff8mC878Qz0dVqo
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Resolution to issues 70 and 74
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 21:17:06 -0000

Slight normative language quibble:

"MUST only" is a bit of a strange construction from a 2119 perspective, =
in that it implies a negation without an explicit NOT. I think we really =
mean "MUST NOT unless...".


> On Oct 20, 2014, at 4:42 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> I have removed the examples section and moved the "Application =
Considerations" section to an appendix.
>=20
> For issue 70 I also added the following wording to section 4.2.3:
>=20
>    A reporting node MUST only send overload reports of a type =
advertised
>    as supported by the reacting node.
>=20
>       Note that a reacting node advertises support for the host and
>       realm report types by including the OC-Supported-Features AVP in
>       the request.  Support for other report types must be explicitly
>       indicated by a new feature bit in the OC-Feature-Vector AVP.
>=20
>=20
>=20
> The diff file is attached.
>=20
> Regards,
>=20
> Steve
> <Diff_ draft-ietf-dime-ovli-04.txt - =
draft-ietf-dime-ovli-04.txt.html>_________________________________________=
______
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


From nobody Mon Oct 20 14:41:11 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 31F4A1ACF0A for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 14:41:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level: 
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ivV4-L6U2Hyf for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 14:41:08 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias243.francetelecom.com [80.12.204.243]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CFF391ACF06 for <dime@ietf.org>; Mon, 20 Oct 2014 14:41:07 -0700 (PDT)
Received: from omfeda07.si.francetelecom.fr (unknown [xx.xx.xx.200]) by omfeda12.si.francetelecom.fr (ESMTP service) with ESMTP id 17BBD3B42DC; Mon, 20 Oct 2014 23:41:06 +0200 (CEST)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.183]) by omfeda07.si.francetelecom.fr (ESMTP service) with ESMTP id E1038158078; Mon, 20 Oct 2014 23:41:05 +0200 (CEST)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH02.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Mon, 20 Oct 2014 23:41:05 +0200
From: <lionel.morand@orange.com>
To: Ben Campbell <ben@nostrum.com>, Steve Donovan <srdonovan@usdonovans.com>
Thread-Topic: [Dime] Proposal for error response wording (issue 85)
Thread-Index: AQHP7FOMzo+IEEAdVEGPqLkd/UJbyJw5F0KAgABpp+A=
Date: Mon, 20 Oct 2014 21:41:05 +0000
Message-ID: <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com>
In-Reply-To: <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.197.38.2]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.10.20.200325
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/znyy42TCc2pGNLXh21jjp4x82lw
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 21:41:10 -0000

Hi,

I think that:
- TOO_BUSY should be restricted to server answer
- UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission =
is required
- UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when=
 retransmission to an alternate peer could be better.

As a second step, we could enhance the answer message (in this draft or in =
a separate draft if preferred) with an error message (e.g. "Error-Diagnosti=
c") that could provide further information to "new" node that will be then =
able to adapt their behavior.
So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Dia=
gnostic set to e.g. "severe overload", besides the OLR in the answer, will =
know that retransmission on the path or a on a different path will likely c=
ause the same error. If no error-diagnostic is sent back or ignored by the =
non-supporting-DOOIC node, we will go back to the situation prior this draf=
t.

Regards,

Lionel

-----Message d'origine-----
De=A0: DiME [mailto:dime-bounces@ietf.org] De la part de Ben Campbell
Envoy=E9=A0: lundi 20 octobre 2014 19:10
=C0=A0: Steve Donovan
Cc=A0: dime@ietf.org
Objet=A0: Re: [Dime] Proposal for error response wording (issue 85)

I agree that we should generalize these, but I think the direction is not q=
uite right. More inline:

> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> wro=
te:
>=20
> We came to the following agreements on error responses:
>=20
> - Servers rejecting a Diameter request due to an overload condition shoul=
d send a 3002 DIAMETER_TOO_BUSY error response.
>=20
> - Agents rejecting a Diameter request due to an overload condition should=
 send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>=20
> I propose that we generalize this to the following:
>=20
> - Reporting nodes rejecting a Diameter request due to an overload conditi=
on SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>=20
> - Reacting nodes rejecting a Diameter request due to an overload conditio=
n SHOULD send a UNABLE-TO-COMPLY.

I don't think we should state this in terms of reaction and reporting nodes=
. I think we should generalize to expected behavior. Also, in the case wher=
e the downstream node does not support DOIC, I'm not sure it makes sense to=
 say the throttling node is really a reporting node (for that particular re=
lationship.)

My suggestion is we say that, if the throttling node has sufficient informa=
tion to determine that the request is not likely to succeed if retried on a=
nother path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that info=
rmation, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MU=
ST if we have the conditionals in place.)

Then we could go on to say that a reaction node (or agent) would typically =
fall under the first category, and a reporting node (or server) would typic=
ally fall under the second. But there certainly may be cases where a reacti=
ng node does not know if other paths could work, and where a reporting node=
 might know that they couldn't.=20


>=20
> This would mean that an agent acting as a reporting node (i.e.; server do=
esn't support DOIC or agent is acting as a server front end) would sent the=
 TOO_BUSY response and an agent acting as a reacting node (i.e.; a client d=
oesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>=20
> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agen=
t behavior will be deleted.
>=20
> I will hold off making this change until tomorrow (Tuesday morning).
>=20
> Regards,
>=20
> Steve
>=20
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime

_______________________________________________
DiME mailing list
DiME@ietf.org
https://www.ietf.org/mailman/listinfo/dime

___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


From nobody Mon Oct 20 15:21:29 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 499F91ACF03 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 15:21:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YMykDdLRZdtb for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 15:21:22 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A84E91ACEFE for <dime@ietf.org>; Mon, 20 Oct 2014 15:21:22 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9KMLLj6022210 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 20 Oct 2014 17:21:22 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Date: Mon, 20 Oct 2014 17:21:20 -0500
X-Mao-Original-Outgoing-Id: 435536480.243884-110da8b2cab79789e2c4a995d473dc99
Content-Transfer-Encoding: quoted-printable
Message-Id: <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>
To: lionel.morand@orange.com
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/tKaVTSOqGti0hDzGCoVuhsshEhg
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 22:21:26 -0000

> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> =
<lionel.morand@orange.com> wrote:
>=20
> Hi,
>=20
> I think that:
> - TOO_BUSY should be restricted to server answer

One of the reasons I think we need to state this by intended result and =
not by role in the network, is that I expect that an overloaded agent =
(according to the agent overload draft) might send TOO-BUSY. And a =
server that acts as an overload authority for a realm might send =
UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a =
Destination-Host AVP.

> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no =
retransmission is required
> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node =
when retransmission to an alternate peer could be better.
>=20
> As a second step, we could enhance the answer message (in this draft =
or in a separate draft if preferred) with an error message (e.g. =
"Error-Diagnostic") that could provide further information to "new" node =
that will be then able to adapt their behavior.
> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an =
Error-Diagnostic set to e.g. "severe overload", besides the OLR in the =
answer, will know that retransmission on the path or a on a different =
path will likely cause the same error. If no error-diagnostic is sent =
back or ignored by the non-supporting-DOOIC node, we will go back to the =
situation prior this draft.
>=20
> Regards,
>=20
> Lionel
>=20
> -----Message d'origine-----
> De : DiME [mailto:dime-bounces@ietf.org] De la part de Ben Campbell
> Envoy=E9 : lundi 20 octobre 2014 19:10
> =C0 : Steve Donovan
> Cc : dime@ietf.org
> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>=20
> I agree that we should generalize these, but I think the direction is =
not quite right. More inline:
>=20
>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>>=20
>> We came to the following agreements on error responses:
>>=20
>> - Servers rejecting a Diameter request due to an overload condition =
should send a 3002 DIAMETER_TOO_BUSY error response.
>>=20
>> - Agents rejecting a Diameter request due to an overload condition =
should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>=20
>> I propose that we generalize this to the following:
>>=20
>> - Reporting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>=20
>> - Reacting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a UNABLE-TO-COMPLY.
>=20
> I don't think we should state this in terms of reaction and reporting =
nodes. I think we should generalize to expected behavior. Also, in the =
case where the downstream node does not support DOIC, I'm not sure it =
makes sense to say the throttling node is really a reporting node (for =
that particular relationship.)
>=20
> My suggestion is we say that, if the throttling node has sufficient =
information to determine that the request is not likely to succeed if =
retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not =
have that information, it SHOULD send TOO-BUSY.   (we should discuss why =
this is not a MUST if we have the conditionals in place.)
>=20
> Then we could go on to say that a reaction node (or agent) would =
typically fall under the first category, and a reporting node (or =
server) would typically fall under the second. But there certainly may =
be cases where a reacting node does not know if other paths could work, =
and where a reporting node might know that they couldn't.=20
>=20
>=20
>>=20
>> This would mean that an agent acting as a reporting node (i.e.; =
server doesn't support DOIC or agent is acting as a server front end) =
would sent the TOO_BUSY response and an agent acting as a reacting node =
(i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY =
response.
>>=20
>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on =
agent behavior will be deleted.
>>=20
>> I will hold off making this change until tomorrow (Tuesday morning).
>>=20
>> Regards,
>>=20
>> Steve
>>=20
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>=20
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
>=20
> =
__________________________________________________________________________=
_______________________________________________
>=20
> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez =
recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>=20
> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and =
delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have =
been modified, changed or falsified.
> Thank you.
>=20


From nobody Mon Oct 20 21:53:23 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 723EA1AD042 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 21:53:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level: 
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MrtUpxhtDEmv for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 21:53:19 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias245.francetelecom.com [80.12.204.245]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 69F541AD035 for <dime@ietf.org>; Mon, 20 Oct 2014 21:53:19 -0700 (PDT)
Received: from omfeda05.si.francetelecom.fr (unknown [xx.xx.xx.198]) by omfeda12.si.francetelecom.fr (ESMTP service) with ESMTP id 8B2643B450C; Tue, 21 Oct 2014 06:53:17 +0200 (CEST)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.186]) by omfeda05.si.francetelecom.fr (ESMTP service) with ESMTP id 70A7E180051; Tue, 21 Oct 2014 06:53:17 +0200 (CEST)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH01.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Tue, 21 Oct 2014 06:53:17 +0200
From: <lionel.morand@orange.com>
To: Ben Campbell <ben@nostrum.com>
Thread-Topic: [Dime] Proposal for error response wording (issue 85)
Thread-Index: AQHP7FOMzo+IEEAdVEGPqLkd/UJbyJw5F0KAgABpp+D//+1BAIAAjwka
Date: Tue, 21 Oct 2014 04:53:16 +0000
Message-ID: <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com>
In-Reply-To: <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.10.20.221821
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/WWBsN8PsmZD3lDEXfNe48ehS-mY
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 04:53:22 -0000

I agree.

Lionel

Envoy=E9 depuis mon Sony Xperia SP d'Orange

---- Ben Campbell a =E9crit ----


> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> <lionel.morand@or=
ange.com> wrote:
>
> Hi,
>
> I think that:
> - TOO_BUSY should be restricted to server answer

One of the reasons I think we need to state this by intended result and not=
 by role in the network, is that I expect that an overloaded agent (accordi=
ng to the agent overload draft) might send TOO-BUSY. And a server that acts=
 as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIV=
ER] to a request that did not contain a Destination-Host AVP.

> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmissio=
n is required
> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node wh=
en retransmission to an alternate peer could be better.
>
> As a second step, we could enhance the answer message (in this draft or i=
n a separate draft if preferred) with an error message (e.g. "Error-Diagnos=
tic") that could provide further information to "new" node that will be the=
n able to adapt their behavior.
> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-D=
iagnostic set to e.g. "severe overload", besides the OLR in the answer, wil=
l know that retransmission on the path or a on a different path will likely=
 cause the same error. If no error-diagnostic is sent back or ignored by th=
e non-supporting-DOOIC node, we will go back to the situation prior this dr=
aft.
>
> Regards,
>
> Lionel
>
> -----Message d'origine-----
> De : DiME [mailto:dime-bounces@ietf.org] De la part de Ben Campbell
> Envoy=E9 : lundi 20 octobre 2014 19:10
> =C0 : Steve Donovan
> Cc : dime@ietf.org
> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>
> I agree that we should generalize these, but I think the direction is not=
 quite right. More inline:
>
>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> wr=
ote:
>>
>> We came to the following agreements on error responses:
>>
>> - Servers rejecting a Diameter request due to an overload condition shou=
ld send a 3002 DIAMETER_TOO_BUSY error response.
>>
>> - Agents rejecting a Diameter request due to an overload condition shoul=
d send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>
>> I propose that we generalize this to the following:
>>
>> - Reporting nodes rejecting a Diameter request due to an overload condit=
ion SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>
>> - Reacting nodes rejecting a Diameter request due to an overload conditi=
on SHOULD send a UNABLE-TO-COMPLY.
>
> I don't think we should state this in terms of reaction and reporting nod=
es. I think we should generalize to expected behavior. Also, in the case wh=
ere the downstream node does not support DOIC, I'm not sure it makes sense =
to say the throttling node is really a reporting node (for that particular =
relationship.)
>
> My suggestion is we say that, if the throttling node has sufficient infor=
mation to determine that the request is not likely to succeed if retried on=
 another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that in=
formation, it SHOULD send TOO-BUSY.   (we should discuss why this is not a =
MUST if we have the conditionals in place.)
>
> Then we could go on to say that a reaction node (or agent) would typicall=
y fall under the first category, and a reporting node (or server) would typ=
ically fall under the second. But there certainly may be cases where a reac=
ting node does not know if other paths could work, and where a reporting no=
de might know that they couldn't.
>
>
>>
>> This would mean that an agent acting as a reporting node (i.e.; server d=
oesn't support DOIC or agent is acting as a server front end) would sent th=
e TOO_BUSY response and an agent acting as a reacting node (i.e.; a client =
doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>
>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on age=
nt behavior will be deleted.
>>
>> I will hold off making this change until tomorrow (Tuesday morning).
>>
>> Regards,
>>
>> Steve
>>
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
>
> _________________________________________________________________________=
________________________________________________
>
> Ce message et ses pieces jointes peuvent contenir des informations confid=
entielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez re=
cu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages =
electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme o=
u falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged i=
nformation that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and de=
lete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have bee=
n modified, changed or falsified.
> Thank you.
>


___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


From nobody Tue Oct 21 00:04:22 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0FB281AD09A for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:04:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6Zg6JuV8cKcW for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:04:19 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1FC6D1AD08F for <dime@ietf.org>; Tue, 21 Oct 2014 00:04:19 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54838 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgTUI-000Bhh-Cj; Tue, 21 Oct 2014 00:04:16 -0700
Message-ID: <54460567.4020400@usdonovans.com>
Date: Tue, 21 Oct 2014 09:04:07 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: lionel.morand@orange.com, Ben Campbell <ben@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com>
In-Reply-To: <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/qGEwI8UEbJKZDVN1-f5WtRpvOGg
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 07:04:21 -0000

I'll work Ben's suggestion into the draft.  I expect it to go into the 
existing Error Response section.

I don't think we have time to define an error-diagnostic AVP.

Steve

On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
> I agree.
>
> Lionel
>
> Envoyé depuis mon Sony Xperia SP d'Orange
>
> ---- Ben Campbell a écrit ----
>
>
>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> <lionel.morand@orange.com> wrote:
>>
>> Hi,
>>
>> I think that:
>> - TOO_BUSY should be restricted to server answer
> One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.
>
>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission is required
>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.
>>
>> As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.
>>
>> Regards,
>>
>> Lionel
>>
>> -----Message d'origine-----
>> De : DiME [mailto:dime-bounces@ietf.org] De la part de Ben Campbell
>> Envoyé : lundi 20 octobre 2014 19:10
>> À : Steve Donovan
>> Cc : dime@ietf.org
>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>
>> I agree that we should generalize these, but I think the direction is not quite right. More inline:
>>
>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>>
>>> We came to the following agreements on error responses:
>>>
>>> - Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>
>>> - Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>
>>> I propose that we generalize this to the following:
>>>
>>> - Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>
>>> - Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
>> I don't think we should state this in terms of reaction and reporting nodes. I think we should generalize to expected behavior. Also, in the case where the downstream node does not support DOIC, I'm not sure it makes sense to say the throttling node is really a reporting node (for that particular relationship.)
>>
>> My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)
>>
>> Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.
>>
>>
>>> This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>
>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.
>>>
>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>
>>> Regards,
>>>
>>> Steve
>>>
>>> _______________________________________________
>>> DiME mailing list
>>> DiME@ietf.org
>>> https://www.ietf.org/mailman/listinfo/dime
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>>
>> _________________________________________________________________________________________________________________________
>>
>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>
>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>> they should not be distributed, used or copied without authorisation.
>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>> Thank you.
>>
>
> _________________________________________________________________________________________________________________________
>
> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
> Thank you.
>
>


From nobody Tue Oct 21 00:06:45 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9B13E1A8033 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 05:18:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4UnudHSQrROK for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 05:18:02 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6C8B51A701C for <dime@ietf.org>; Mon, 20 Oct 2014 05:18:02 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:51612 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgBuS-0000Pk-5y for dime@ietf.org; Mon, 20 Oct 2014 05:18:01 -0700
Message-ID: <5444FD77.6000602@usdonovans.com>
Date: Mon, 20 Oct 2014 14:17:59 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------060304030807010104050902"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Py0yUCaY7UFGcQpMh5ra9cFWfKk
X-Mailman-Approved-At: Tue, 21 Oct 2014 00:06:24 -0700
Subject: [Dime] Resolution to issue 67
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 12:18:05 -0000
X-List-Received-Date: Mon, 20 Oct 2014 12:18:05 -0000

This is a multi-part message in MIME format.
--------------060304030807010104050902
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have updated github with the resolution to issue 67.

The diff is attached.

Regards,

Steve

--------------060304030807010104050902
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 28</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 28</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="delete">6</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 15, line 15</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 15, line 15</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   such host-type OCS already exists.</td><td> </td><td class="right">   such host-type OCS already exists.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-</td><td> </td><td class="right">   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   id,realm-id) when receiving an answer message of application app-id</td><td> </td><td class="right">   id,realm-id) when receiving an answer message of application app-id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</td><td> </td><td class="right">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   unless such realm type OCS already exists.</td><td> </td><td class="right">   unless such realm type OCS already exists.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes delete an OCS when it expires (i.e. when current time</td><td> </td><td class="right">   Reacting nodes delete an OCS when it expires (i.e. when current time</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   minus reception time is greater than validity duration).</td><td> </td><td class="right">   minus reception time is greater than validity duration).</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Editor's note:</span> Reacting nodes also delete on OCS with an updated OLR</td><td> </td><td class="rblock">   Reacting nodes also delete on OCS with an updated OLR is received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   is received with a validity duration of zero.</td><td> </td><td class="rblock">   with a validity duration of zero.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes update the host-type OCS identified by OCS-Id = (app-</td><td> </td><td class="right">   Reacting nodes update the host-type OCS identified by OCS-Id = (app-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   id,host-id) when receiving an answer message of application app-id</td><td> </td><td class="right">   id,host-id) when receiving an answer message of application app-id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a</td><td> </td><td class="right">   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number higher than the stored sequence number.</td><td> </td><td class="right">   sequence number higher than the stored sequence number.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-</td><td> </td><td class="right">   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   id,realm-id) when receiving an answer message of application app-id</td><td> </td><td class="right">   id,realm-id) when receiving an answer message of application app-id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with</td><td> </td><td class="right">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   a sequence number higher than the stored sequence number.</td><td> </td><td class="right">   a sequence number higher than the stored sequence number.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 15, line 40</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 15, line 40</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   change").</td><td> </td><td class="right">   change").</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)</td><td> </td><td class="right">   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   when receiving a request of application app-id containing an OC-</td><td> </td><td class="right">   when receiving a request of application app-id containing an OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP indicating support of the Abatement Algorithm</td><td> </td><td class="right">   Supported-Features AVP indicating support of the Abatement Algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Alg (which the reporting node selects) while being overloaded, unless</td><td> </td><td class="right">   Alg (which the reporting node selects) while being overloaded, unless</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   such OCS already exists.</td><td> </td><td class="right">   such OCS already exists.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes delete an OCS when it expires.</td><td> </td><td class="right">   Reporting nodes delete an OCS when it expires.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Editor's note: Reporting nodes should send updated overload reports</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   with a validity duration of zero for a period of time after an OCS</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   expires or is removed due to the overload condition ending.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)</td><td> </td><td class="right">   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   when they detect the need to modify the requested amount of</td><td> </td><td class="right">   when they detect the need to modify the requested amount of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   application app-id traffic reduction.</td><td> </td><td class="right">   application app-id traffic reduction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.2.  Reacting Node Behavior</td><td> </td><td class="right">4.2.2.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Once a reacting node receives an OC-OLR AVP from a reporting node, it</td><td> </td><td class="right">   Once a reacting node receives an OC-OLR AVP from a reporting node, it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   applies traffic abatement based on the selected algorithm with the</td><td> </td><td class="right">   applies traffic abatement based on the selected algorithm with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node and the current overload condition.  The reacting node</td><td> </td><td class="right">   reporting node and the current overload condition.  The reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   learns the reporting node supported abatement algorithms directly</td><td> </td><td class="right">   learns the reporting node supported abatement algorithms directly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 18, line 45</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 18, line 38</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">All OLRs sent have an expiration time calculated by adding the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      validity-duration contained in the OLR to the time the message was</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      sent.  Transit time for the OLR can be safely ignored.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      reporting node can ensure that all reacting nodes have received</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the OLR by continuing to send it in answer messages until the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      expiration time for all OLRs sent for that overload contition have</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      expired.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.3.  Protocol Extensibility</td><td> </td><td class="right">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The extention may also define new AVPs for use in DOIC Capability</td><td> </td><td class="right">   The extention may also define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 4 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>7 lines changed or deleted</i></th><th><i> </i></th><th><i>11 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an acti
 ve overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.   
       Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR
  AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-t
 ype Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per
  supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control
  State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS
 -Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting node
 s delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   p
 reviously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the 
 Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\
 n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reac
 ting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as bein
 g no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When 
 a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the 
 OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The
  reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature b
 it is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see
  the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any in
 stance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the lo
 gic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overlo
 ad condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   Th
 e method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to lea
 rn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 
 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AV
 P code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example
 , the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field o
 f announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concer
 ns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\
 n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequenc
 e number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlie
 r received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumera
 ted.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the
  Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition
  applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, co
 mpared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires Ap
 ril 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +------------------------------
 --------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications
  to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the
  Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to tar
 get attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or serv
 er can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in 
 requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload repor
 t from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015            
     [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed c
 ertain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select whi
 ch peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Dra
 ft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean
 -Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [
 Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix
  A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current 
 [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n 
      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary differenc
 e between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a
  client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the tar
 get server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   reques
 ting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work ha
 s already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\
 n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in th
 e 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR 
 requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more wor
 k than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      
 consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\
 n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015       
          [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n 
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All 
 rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4
 \n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility
   . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .
   26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Norm
 ative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . .
  . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined
  in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the 
 rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, 
 actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s r
 ole as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporti
 ng nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   i
 ntroduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload
 \n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting n
 odes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the correspondin
 g Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is d
 etermined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes th
 at do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Featu
 res AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algo
 rithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the conte
 nt of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diamete
 r\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sen
 t to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n  
  in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility
  mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n 
   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ (
  _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as
  back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include t
 he OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      de
 scribed in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Pa
 ge 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined
  in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by
  the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   sup
 ported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type 
 OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Editor\'s note: Reacting nodes also delete on OCS with an updated OLR\n   is received with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) whe
 n receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires
 .\n\n   Editor\'s note: Reporting nodes should send updated overload reports\n   with a validity duration of zero for a period of time after an OCS\n   expires or is removed due to the overload condition ending.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Support
 ed-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as iden
 tified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above beh
 avior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, t
 he reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report i
 ndicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Secti
 on 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting
  nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of
  a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Suppo
 rted-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP 
 value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC           
            October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n
    2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.
 2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the
  loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent re
 duction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pa
 irs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Feature
 s AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilities to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node
  includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the de
 fault\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC
 -Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD
  be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n 
   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a time
 ly matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:
 \n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destinati
 on-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Request reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC              
         October 2014\n\n\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new
 \n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag
  _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +------
 --------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of iss
 ue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n  
  Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Th
 reat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   app
 ropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a
  pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload c
 onditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might cont
 inue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the 
 need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload
  report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control p
 urposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requir
 ement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft
 -ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional
  traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handli
 ng of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this hap
 pens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For session-bas
 ed applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same 
 session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment
  to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent
 \n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n 
      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft            
         DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a re
 quest that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should
  be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number
  of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence
 .\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations wheth
 er some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------060304030807010104050902--


From nobody Tue Oct 21 00:06:53 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D85581A8724 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:39:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gIM6d8nWnEk1 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 09:39:47 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1A73A1A8A96 for <dime@ietf.org>; Mon, 20 Oct 2014 09:27:04 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53049 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgFnN-0002jZ-DO for dime@ietf.org; Mon, 20 Oct 2014 09:26:58 -0700
Message-ID: <544537CF.7060200@usdonovans.com>
Date: Mon, 20 Oct 2014 18:26:55 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------020200010607080807080507"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/AIEXWTL8UpA4-WGGLyHmaEDrJ2A
X-Mailman-Approved-At: Tue, 21 Oct 2014 00:06:24 -0700
Subject: [Dime] Scrubbing of AVP descriptions, resolution of issue 82
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 16:39:56 -0000

This is a multi-part message in MIME format.
--------------020200010607080807080507
Content-Type: multipart/alternative;
 boundary="------------020405030206080004040302"


--------------020405030206080004040302
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

With this update I did a scrub of avp description, removing behavior 
definitions that are already in other sections.  There were also a few 
editorial changes mixed in.

I've attached the diff file and a summary of the changes follows.

Regards,

Steve

-----

Section 6.1 OC-Supported-Features

Removed the following which is covered in the section on Capability 
Announcement:

    A reacting node includes this AVP to indicate its capabilities to a
    reporting node.  For example, the reacting node may indicate which
    (future defined) traffic abatement algorithms it supports in addition
    to the default.

    During the message exchange the DOIC nodes express their common set
    of supported capabilities.  The reacting node includes the OC-
    Supported-Features AVP that announces what it supports.  The
    reporting node that sends the answer also includes the OC-Supported-
    Features AVP that describes the capabilities it supports.  The set of
    capabilities advertised by the reporting node depends on local
    policies.  Since the loss abatement algorithm Section 5 is mandatory
    to implement DOIC can always be enabled between these DOIC nodes.
  

Also changed the following in section 4.1.1, as the OC-Feature-Vector is 
an optional parameter:

Old text:

    A reacting node MUST include the OC-Feature-Vector AVP with an
    indication of the loss algorithm.

New text

A reacting node MAY include the OC-Feature-Vector AVP with an indication 
of the loss algorithm.  A reacting node MUST include the 
OC-Feature-Vector AVP to indicate support for abatement algorithms in 
addition to the loss algorithm.

6.3 OC-OLR

Removed the following, it belongs in the OC-Validity-Duration AVP section:

    The OC-Validity-Duration AVP indicates the validity time of the
    overload report associated with a specific sequence number, measured
    after reception of the OC-OLR AVP.  The validity time MUST NOT be
    updated after reception of subsequent OC-OLR AVPs with the same
    sequence number.  The default value for the OC-Validity-Duration AVP
    value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is
    not present in the OC-OLR AVP, the default value applies.

Section 6.5 - OC-Sequence-Number

As resolution to issue 82, change the following:

    From the functionality point of view, the OC-Sequence-Number AVP MUST
    be used as a non-volatile increasing counter between two DOIC nodes.

To:

          From the functionality point of view, the OC-Sequence-Number 
AVP MUST
          be used as a non-volatile increasing counter for a sequence of 
overload reports
          between two DOIC nodes for the same overload occurrence.

Moved the following to section 4.2.3 Reporting Node Behavior (for 
overload report handling)

    When generating sequence numbers, the new sequence number MUST be
    greater than any sequence number in an active overload report
    previously sent by the reporting node.  This property MUST hold over
    a reboot of the reporting node.

Added the following to section 4.2.3:

           If OLR is for a new overload condition and there is no unexpired
           overload report for previous overload conditions
           at any reacting node then the reporting node MAY
           set the sequence number to any value.

           The reacting node MAY update the overload report with new 
reduction
           percentages.  When doing so, the reacting node MUST increase the
           sequence number in the new OLR sent.

           When generating sequence numbers for , the new sequence 
number MUST be
           greater than any sequence number in an active (unexpired) 
overload report
           previously sent by the reporting node.  This property MUST 
hold over
           a reboot of the reporting node.

Section 6.5 OC-Validity-Duration AVP:

Removed the following:

    When a reporting node has recovered from overload, it SHOULD
    invalidate any existing overload reports in a timely matter.  This
    can be achieved by sending an updated overload report (meaning the
    OLR contains a new sequence number) with the OC-Validity-Duration AVP
    value set to zero ("0").  If the overload report is about to expire
    naturally, the reporting node MAY choose to simply let it do so.

    A reacting node MUST invalidate and remove an overload report that
    expires without an explicit overload report containing an OC-
    Validity-Duration value set to zero ("0").

Section 6.6 OC-Report-Type

Removed the following editor's note:

       Editor's note: There is still an open issue on the definition of
       Realm reports and whether what report types should be supported.
       There is consensus that host reports should be supported.  There
       is discussion on Realm reports and Realm-Routed-Request reports.
       The above definition applies to Realm-Routed-Request reports where
       Realm reports are defined to apply to all requests that match the
       realm, independent of the presence, absence or value of the
       Destination-Host AVP.











--------------020405030206080004040302
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    With this update I did a scrub of avp description, removing behavior
    definitions that are already in other sections.&nbsp; There were also a
    few editorial changes mixed in.<br>
    <br>
    I've attached the diff file and a summary of the changes follows.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
    -----<br>
    <br>
    Section 6.1 OC-Supported-Features<br>
    <br>
    Removed the following which is covered in the section on Capability
    Announcement:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   A reacting node includes this AVP to indicate its capabilities to a
   reporting node.  For example, the reacting node may indicate which
   (future defined) traffic abatement algorithms it supports in addition
   to the default.

   During the message exchange the DOIC nodes express their common set
   of supported capabilities.  The reacting node includes the OC-
   Supported-Features AVP that announces what it supports.  The
   reporting node that sends the answer also includes the OC-Supported-
   Features AVP that describes the capabilities it supports.  The set of
   capabilities advertised by the reporting node depends on local
   policies.  Since the loss abatement algorithm Section 5 is mandatory
   to implement DOIC can always be enabled between these DOIC nodes.
 
</pre>
    Also changed the following in section 4.1.1, as the
    OC-Feature-Vector is an optional parameter:<br>
    <br>
    Old text:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   A reacting node MUST include the OC-Feature-Vector AVP with an
   indication of the loss algorithm.</pre>
    New text<br>
    <br>
    A reacting node MAY include the OC-Feature-Vector AVP with an
    indication of the loss algorithm.&nbsp; A reacting node MUST include the
    OC-Feature-Vector AVP to indicate support for abatement algorithms
    in addition to the loss algorithm.<br>
    <br>
    6.3 OC-OLR<br>
    <br>
    Removed the following, it belongs in the OC-Validity-Duration AVP
    section:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   The OC-Validity-Duration AVP indicates the validity time of the
   overload report associated with a specific sequence number, measured
   after reception of the OC-OLR AVP.  The validity time MUST NOT be
   updated after reception of subsequent OC-OLR AVPs with the same
   sequence number.  The default value for the OC-Validity-Duration AVP
   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is
   not present in the OC-OLR AVP, the default value applies.
</pre>
    Section 6.5 - OC-Sequence-Number<br>
    <br>
    As resolution to issue 82, change the following:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   From the functionality point of view, the OC-Sequence-Number AVP MUST
  &nbsp;be used as a non-volatile increasing counter between two DOIC nodes.</pre>
    To:<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From the functionality point of view, the
    OC-Sequence-Number AVP MUST<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; be used as a non-volatile increasing counter for a sequence
    of overload reports<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; between two DOIC nodes for the same overload occurrence. <br>
    <br>
    Moved the following to section 4.2.3 Reporting Node Behavior (for
    overload report handling)<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   When generating sequence numbers, the new sequence number MUST be
   greater than any sequence number in an active overload report
   previously sent by the reporting node.  This property MUST hold over
   a reboot of the reporting node.</pre>
    Added the following to section 4.2.3:<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If OLR is for a new overload condition and there is no
    unexpired&nbsp; <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overload report for previous overload conditions <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at any reacting node then the reporting node MAY <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set the sequence number to any value. <br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The reacting node MAY update the overload report with new
    reduction<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; percentages.&nbsp; When doing so, the reacting node MUST
    increase the<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sequence number in the new OLR sent.<br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; When generating sequence numbers for , the new sequence
    number MUST be<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; greater than any sequence number in an active (unexpired)
    overload report<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; previously sent by the reporting node.&nbsp; This property MUST
    hold over<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a reboot of the reporting node.<br>
    <br>
    Section 6.5 OC-Validity-Duration AVP:<br>
    <br>
    Removed the following:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   When a reporting node has recovered from overload, it SHOULD
   invalidate any existing overload reports in a timely matter.  This
   can be achieved by sending an updated overload report (meaning the
   OLR contains a new sequence number) with the OC-Validity-Duration AVP
   value set to zero ("0").  If the overload report is about to expire
   naturally, the reporting node MAY choose to simply let it do so.

   A reacting node MUST invalidate and remove an overload report that
   expires without an explicit overload report containing an OC-
   Validity-Duration value set to zero ("0").

</pre>
    Section 6.6 OC-Report-Type<br>
    <br>
    Removed the following editor's note:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>      Editor's note: There is still an open issue on the definition of
      Realm reports and whether what report types should be supported.
      There is consensus that host reports should be supported.  There
      is discussion on Realm reports and Realm-Routed-Request reports.
      The above definition applies to Realm-Routed-Request reports where
      Realm reports are defined to apply to all requests that match the
      realm, independent of the presence, absence or value of the
      Destination-Host AVP.</pre>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
  </body>
</html>

--------------020405030206080004040302--

--------------020200010607080807080507
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 28</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 28</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="delete">5</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">28</span></td><td> </td><td class="rblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="delete">28</span></td><td> </td><td class="rblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="delete">30</span></td><td> </td><td class="rblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="insert">29</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="delete">30</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="insert">29</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  3<span class="delete">2</span></td><td> </td><td class="rblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  3<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td> </td><td class="right">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.3.  Request Transaction Classification  . . . . . . . . . . .  3<span class="delete">6</span></td><td> </td><td class="rblock">     C.3.  Request Transaction Classification  . . . . . . . . . . .  3<span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  3<span class="delete">8</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  3<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 12, line 20</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 12, line 20</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent does not include the OC-Supported-Features AVP then the DOIC</td><td> </td><td class="right">   agent does not include the OC-Supported-Features AVP then the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent inserts the AVP.  If the message already has the AVP then the</td><td> </td><td class="right">   agent inserts the AVP.  If the message already has the AVP then the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agent either leaves it unchanged in the relayed message or modifies</td><td> </td><td class="right">   agent either leaves it unchanged in the relayed message or modifies</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   it to reflect a mixed set of DOIC features.</td><td> </td><td class="right">   it to reflect a mixed set of DOIC features.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.1.1.  Reacting Node Behavior</td><td> </td><td class="right">4.1.1.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node MUST include the OC-Supported-Features AVP in all</td><td> </td><td class="right">   A reacting node MUST include the OC-Supported-Features AVP in all</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request messages.</td><td> </td><td class="right">   request messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A reacting node <span class="delete">MUST</span> include the OC-Feature-Vector AVP with an</td><td> </td><td class="rblock">   A reacting node <span class="insert">MAY</span> include the OC-Feature-Vector AVP with an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   indication of the loss algorithm.</td><td> </td><td class="rblock">   indication of <span class="insert">the loss algorithm.  A reacting node MUST include the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   OC-Feature-Vector AVP to indicate support for abatement algorithms in</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   addition to</span> the loss algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reacting node SHOULD indicate support for all other DOIC features</td><td> </td><td class="right">   A reacting node SHOULD indicate support for all other DOIC features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   it supports.</td><td> </td><td class="right">   it supports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An OC-Supported-Features AVP in answer messages indicates there is a</td><td> </td><td class="right">   An OC-Supported-Features AVP in answer messages indicates there is a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node for the transaction.  The reacting node MAY take</td><td> </td><td class="right">   reporting node for the transaction.  The reacting node MAY take</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   action based on the features indicated in the OC-Feature-Vector AVP.</td><td> </td><td class="right">   action based on the features indicated in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that the loss abatement algorithm is the only feature</td><td> </td><td class="right">      Note that the loss abatement algorithm is the only feature</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      described in this document and it does not require action to be</td><td> </td><td class="right">      described in this document and it does not require action to be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 17, line 14</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 17, line 23</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number, the reacting node MUST update the overload control</td><td> </td><td class="right">   sequence number, the reacting node MUST update the overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   state associated with the realm or the specific node in the realm.</td><td> </td><td class="right">   state associated with the realm or the specific node in the realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When an overload control state is created or updated, the reacting</td><td> </td><td class="right">   When an overload control state is created or updated, the reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node MUST apply the traffic abatement requested in the OC-OLR AVP</td><td> </td><td class="right">   node MUST apply the traffic abatement requested in the OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   using the algorithm announced in the OC-Supported-Features AVP</td><td> </td><td class="right">   using the algorithm announced in the OC-Supported-Features AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   contained in the received answer message along with the OC-OLR AVP.</td><td> </td><td class="right">   contained in the received answer message along with the OC-OLR AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The validity duration of the overload information contained in the</td><td> </td><td class="right">   The validity duration of the overload information contained in the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration</td><td> </td><td class="right">   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   AVP or is implicitly equals to the default value <span class="delete">(5 seconds)</span> if the</td><td> </td><td class="rblock">   AVP or is implicitly equals to the default value if the <span class="insert">OC-Validity-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">OC-Validity-Duration</span> AVP is absent.  The reacting node MUST maintain</td><td> </td><td class="rblock"><span class="insert">   Duration</span> AVP is absent.  The reacting node MUST maintain the validity</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   the validity duration in the overload control state.  Once the</td><td> </td><td class="rblock">   duration in the overload control state.  Once the validity duration</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   validity duration times out, the reacting node MUST assume the</td><td> </td><td class="rblock">   times out, the reacting node MUST assume the overload condition</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   overload condition reported in a previous OC-OLR AVP has ended.</td><td> </td><td class="rblock">   reported in a previous OC-OLR AVP has ended.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A value of zero ("0") received in the OC-Validity-Duration in an</td><td> </td><td class="right">   A value of zero ("0") received in the OC-Validity-Duration in an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   updated overload report indicates that the overload condition has</td><td> </td><td class="right">   updated overload report indicates that the overload condition has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ended and that the overload state is no longer valid.</td><td> </td><td class="right">   ended and that the overload state is no longer valid.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In the case that the validity duration expires or is explicitly</td><td> </td><td class="right">   In the case that the validity duration expires or is explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   signaled as being no longer valid the state associated with the</td><td> </td><td class="right">   signaled as being no longer valid the state associated with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report MUST be removed and any abatement associated with the</td><td> </td><td class="right">   overload report MUST be removed and any abatement associated with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report MUST be ended in a controlled fashion.  After</td><td> </td><td class="right">   overload report MUST be ended in a controlled fashion.  After</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   removing the overload state the sequence number MUST NOT be used for</td><td> </td><td class="right">   removing the overload state the sequence number MUST NOT be used for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 18, line 5</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 18, line 12</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request message.  Since the loss abatement algorithm Section 5 is</td><td> </td><td class="right">   request message.  Since the loss abatement algorithm Section 5 is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mandatory to implement DOIC can always be enabled between these DOIC</td><td> </td><td class="right">   mandatory to implement DOIC can always be enabled between these DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   nodes See Section 4.1 for further discussion on the capability and</td><td> </td><td class="right">   nodes See Section 4.1 for further discussion on the capability and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   feature announcement.</td><td> </td><td class="right">   feature announcement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a traffic reduction is required due to an overload condition and</td><td> </td><td class="right">   When a traffic reduction is required due to an overload condition and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the overload control solution is supported by the sender of the</td><td> </td><td class="right">   the overload control solution is supported by the sender of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter request, the reporting node SHOULD include an OC-Supported-</td><td> </td><td class="right">   Diameter request, the reporting node SHOULD include an OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td> </td><td class="right">   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A reporting node MAY choose to not send an overload report to a</td><td> </td><td class="rblock">   A reporting node MAY choose to not <span class="insert">re</span>send an overload report to a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reacting node if it can guarantee that this overload report is</td><td> </td><td class="right">   reacting node if it can guarantee that this overload report is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   already active in the reacting node.</td><td> </td><td class="right">   already active in the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note - In some cases (e.g. when there are one or multiple agents</td><td> </td><td class="right">      Note - In some cases (e.g. when there are one or multiple agents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      in the path between reporting and reacting nodes, or when overload</td><td> </td><td class="right">      in the path between reporting and reacting nodes, or when overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reports are discarded by reacting nodes) the reporting node may</td><td> </td><td class="right">      reports are discarded by reacting nodes) the reporting node may</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      not be able to guarantee that the reacting node has received the</td><td> </td><td class="right">      not be able to guarantee that the reacting node has received the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      report.</td><td> </td><td class="right">      report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td> </td><td class="right">   The OC-OLR AVP contains the required traffic reduction and the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 18, line 28</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 18, line 35</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the request sender.</td><td> </td><td class="right">   the request sender.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MUST only send overload reports of a type advertised</td><td> </td><td class="right">   A reporting node MUST only send overload reports of a type advertised</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   as supported by the reacting node.</td><td> </td><td class="right">   as supported by the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that a reacting node advertises support for the host and</td><td> </td><td class="right">      Note that a reacting node advertises support for the host and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm report types by including the OC-Supported-Features AVP in</td><td> </td><td class="right">      realm report types by including the OC-Supported-Features AVP in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the request.  Support for other report types must be explicitly</td><td> </td><td class="right">      the request.  Support for other report types must be explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td> </td><td class="right">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">If OLR is for a new overload condition and there is no unexpired</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   overload report for previous overload conditions at any reacting node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   then the reporting node MAY set the sequence number to any value.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The reacting node MAY update the overload report with new reduction</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   percentages.  When doing so, the reacting node MUST increase the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   sequence number in the new OLR sent.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   When generating sequence numbers for , the new sequence number MUST</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   be greater than any sequence number in an active (unexpired) overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   report previously sent by the reporting node.  This property MUST</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   hold over a reboot of the reporting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 22, line 26</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 22, line 41</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mechanism specified in this document by making it mandatory to</td><td> </td><td class="right">   mechanism specified in this document by making it mandatory to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implement for the application and referencing this specification</td><td> </td><td class="right">   implement for the application and referencing this specification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   normatively.  In such a case, the rules for handling of the M-bit</td><td> </td><td class="right">   normatively.  In such a case, the rules for handling of the M-bit</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   must follow the guidance in [RFC6733].  It is the responsibility of</td><td> </td><td class="right">   must follow the guidance in [RFC6733].  It is the responsibility of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the Diameter application designers to define how overload control</td><td> </td><td class="right">   the Diameter application designers to define how overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mechanisms works on that application.</td><td> </td><td class="right">   mechanisms works on that application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.1.  OC-Supported-Features AVP</td><td> </td><td class="right">6.1.  OC-Supported-Features AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and</td><td> </td><td class="right">   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   serves <span class="delete">for</span> two purposes.  First, it announces a node's support for</td><td> </td><td class="rblock">   serves two purposes.  First, it announces a node's support for the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   the DOIC in general.  Second, it contains the description of the</td><td> </td><td class="rblock">   DOIC <span class="insert">solution</span> in general.  Second, it contains the description of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported DOIC features of the sending node.  The OC-Supported-</td><td> </td><td class="right">   supported DOIC features of the sending node.  The OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features AVP MUST be included in every Diameter message a DOIC</td><td> </td><td class="right">   Features AVP MUST be included in every Diameter message a DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supporting node sends.</td><td> </td><td class="right">   supporting node sends.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      OC-Supported-Features ::= &lt; AVP Header: TBD1 &gt;</td><td> </td><td class="right">      OC-Supported-Features ::= &lt; AVP Header: TBD1 &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                [ OC-Feature-Vector ]</td><td> </td><td class="right">                                [ OC-Feature-Vector ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                              * [ AVP ]</td><td> </td><td class="right">                              * [ AVP ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Feature-Vector sub-AVP is used to announce the DOIC features</td><td> </td><td class="right">   The OC-Feature-Vector sub-AVP is used to announce the DOIC features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported by the DOIC node, in the form of a flag bits field in which</td><td> </td><td class="right">   supported by the DOIC node, in the form of a flag bits field in which</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   each bit announces one feature or capability supported by the node</td><td> </td><td class="right">   each bit announces one feature or capability supported by the node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (see Section 6.2).  The absence of the OC-Feature-Vector AVP</td><td> </td><td class="right">   (see Section 6.2).  The absence of the OC-Feature-Vector AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates that only the default traffic abatement algorithm described</td><td> </td><td class="right">   indicates that only the default traffic abatement algorithm described</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   in this specification is supported.</td><td> </td><td class="right">   in this specification is supported.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A reacting node includes this AVP to indicate its capabilities to a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reporting node.  For example, the reacting node may indicate which</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (future defined) traffic abatement algorithms it supports in addition</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   to the default.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   During the message exchange the DOIC nodes express their common set</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of supported capabilities.  The reacting node includes the OC-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Supported-Features AVP that announces what it supports.  The</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reporting node that sends the answer also includes the OC-Supported-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Features AVP that describes the capabilities it supports.  The set of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   capabilities advertised by the reporting node depends on local</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   policies.  Since the loss abatement algorithm Section 5 is mandatory</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   to implement DOIC can always be enabled between these DOIC nodes.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.2.  OC-Feature-Vector AVP</td><td> </td><td class="right">6.2.  OC-Feature-Vector AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and</td><td> </td><td class="right">   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   contains a 64 bit flags field of announced capabilities of a DOIC</td><td> </td><td class="right">   contains a 64 bit flags field of announced capabilities of a DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node.  The value of zero (0) is reserved.</td><td> </td><td class="right">   node.  The value of zero (0) is reserved.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following capabilities are defined in this document:</td><td> </td><td class="right">   The following capabilities are defined in this document:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td> </td><td class="right">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      When this flag is set by the DOIC node it means that the default</td><td> </td><td class="right">      When this flag is set by the DOIC node it means that the default</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      traffic abatement (loss) algorithm is supported.</td><td> </td><td class="right">      traffic abatement (loss) algorithm is supported.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.3.  OC-OLR AVP</td><td> </td><td class="right">6.3.  OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the</td><td> </td><td class="right">   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">necessary information</span> to convey an overload report.  The OC-OLR AVP</td><td> </td><td class="rblock">   <span class="insert">information necessary</span> to convey an overload report.  The OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   does not explicitly contain all information needed by the reacting</td><td> </td><td class="right">   does not explicitly contain all information needed by the reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node to decide whether a subsequent request must undergo a throttling</td><td> </td><td class="right">   node to decide whether a subsequent request must undergo a throttling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   process with the received reduction percentage.  The value of the OC-</td><td> </td><td class="right">   process with the received reduction percentage.  The value of the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Report-Type AVP within the OC-OLR AVP indicates which implicit</td><td> </td><td class="right">   Report-Type AVP within the OC-OLR AVP indicates which implicit</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   information is relevant for this decision (see Section 6.6).  The</td><td> </td><td class="right">   information is relevant for this decision (see Section 6.6).  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   application the OC-OLR AVP applies to is the same as the Application-</td><td> </td><td class="right">   application the OC-OLR AVP applies to is the same as the Application-</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Id found in the Diameter message header.  The <span class="delete">identity</span> the <span class="delete">OC-OLR</span> AVP</td><td> </td><td class="rblock">   Id found in the Diameter message header.  The <span class="insert">host or realm</span> the <span class="insert">OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   concerns is determined from the Origin-Host AVP <span class="delete">(and</span> Origin-Realm AVP</td><td> </td><td class="rblock"><span class="insert">   OLR</span> AVP concerns is determined from the Origin-Host AVP <span class="insert">and/or</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">as well)</span> found <span class="delete">from</span> the encapsulating Diameter command.  The OC-OLR</td><td> </td><td class="rblock">   Origin-Realm AVP found <span class="insert">in</span> the encapsulating Diameter command.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   AVP is intended to be sent only by a reporting node.</td><td> </td><td class="rblock">   OC-OLR AVP is intended to be sent only by a reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      OC-OLR ::= &lt; AVP Header: TBD2 &gt;</td><td> </td><td class="right">      OC-OLR ::= &lt; AVP Header: TBD2 &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 &lt; OC-Sequence-Number &gt;</td><td> </td><td class="right">                 &lt; OC-Sequence-Number &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 &lt; OC-Report-Type &gt;</td><td> </td><td class="right">                 &lt; OC-Report-Type &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 [ OC-Reduction-Percentage ]</td><td> </td><td class="right">                 [ OC-Reduction-Percentage ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 [ OC-Validity-Duration ]</td><td> </td><td class="right">                 [ OC-Validity-Duration ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">               * [ AVP ]</td><td> </td><td class="right">               * [ AVP ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The OC-Validity-Duration AVP indicates the validity time of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload report associated with a specific sequence number, measured</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   after reception of the OC-OLR AVP.  The validity time MUST NOT be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   updated after reception of subsequent OC-OLR AVPs with the same</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   sequence number.  The default value for the OC-Validity-Duration AVP</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   not present in the OC-OLR AVP, the default value applies.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td> </td><td class="right">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td> </td><td class="right">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with unknown values SHOULD be silently discarded and the event SHOULD</td><td> </td><td class="right">   with unknown values SHOULD be silently discarded and the event SHOULD</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be logged.</td><td> </td><td class="right">   be logged.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.4.  OC-Sequence-Number AVP</td><td> </td><td class="right">6.4.  OC-Sequence-Number AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td> </td><td class="right">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Its usage in the context of overload control is described in</td><td> </td><td class="right">   Its usage in the context of overload control is described in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 4.2.</td><td> </td><td class="right">   Section 4.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td> </td><td class="right">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   be used as a non-volatile increasing counter between two DOIC <span class="delete">nodes.</span></td><td> </td><td class="rblock">   be used as a non-volatile increasing counter <span class="insert">for a sequence of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The sequence number is only required to be unique between two DOIC</td><td> </td><td class="rblock"><span class="insert">   overload reports</span> between two DOIC <span class="insert">nodes for the same overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   nodes.  Sequence numbers are treated in a <span class="delete">uni-directional</span> manner,</td><td> </td><td class="rblock"><span class="insert">   occurrence.</span>  The sequence number is only required to be unique</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   i.e. two sequence numbers on each direction between two DOIC nodes</td><td> </td><td class="rblock">   between two DOIC nodes.  Sequence numbers are treated in a <span class="insert">uni-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   are not related or correlated.</td><td> </td><td class="rblock"><span class="insert">   directional</span> manner, i.e. two sequence numbers on each direction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   between two DOIC nodes are not related or correlated.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When generating sequence numbers, the new sequence number MUST be</td><td> </td><td class="right">   When generating sequence numbers, the new sequence number MUST be</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   greater than any sequence number in an <span class="delete">active</span> overload report</td><td> </td><td class="rblock">   greater than any sequence number in an <span class="insert">active, unexpired,</span> overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   previously sent by the reporting node.  This property MUST hold over</td><td> </td><td class="rblock">   report previously sent by the reporting node.  This property MUST</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   a reboot of the reporting node.</td><td> </td><td class="rblock">   hold over a reboot of the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.5.  OC-Validity-Duration AVP</td><td> </td><td class="right">6.5.  OC-Validity-Duration AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32</td><td> </td><td class="right">   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and indicates in seconds the validity time of the overload report.</td><td> </td><td class="right">   and indicates in seconds the validity time of the overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The number of seconds is measured after reception of the first OC-OLR</td><td> </td><td class="right">   The number of seconds is measured after reception of the first OC-OLR</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVP with a given value of OC-Sequence-Number AVP.  The default value</td><td> </td><td class="right">   AVP with a given value of OC-Sequence-Number AVP.  The default value</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the</td><td> </td><td class="right">   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the</td><td> </td><td class="right">   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   default value applies.  Validity duration with values above 86400</td><td> </td><td class="right">   default value applies.  Validity duration with values above 86400</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 25, line 47</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 25, line 43</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The Destination-Host AVP is absent in the request.</td><td> </td><td class="right">      The Destination-Host AVP is absent in the request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The value of the Destination-Realm AVP in the request matches the</td><td> </td><td class="right">      The value of the Destination-Realm AVP in the request matches the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      value of the Origin-Realm AVP of the received message that</td><td> </td><td class="right">      value of the Origin-Realm AVP of the received message that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      contained the OC-OLR AVP.</td><td> </td><td class="right">      contained the OC-OLR AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The value of the Application-ID in the Diameter Header of the</td><td> </td><td class="right">      The value of the Application-ID in the Diameter Header of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      request matches the value of the Application-ID of the Diameter</td><td> </td><td class="right">      request matches the value of the Application-ID of the Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Header of the received message that contained the OC-OLR AVP.</td><td> </td><td class="right">      Header of the received message that contained the OC-OLR AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Editor's note: There is still an open issue on the definition of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Realm reports and whether what report types should be supported.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      There is consensus that host reports should be supported.  There</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      is discussion on Realm reports and Realm-Routed-Request reports.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      The above definition applies to Realm-Routed-Request reports where</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Realm reports are defined to apply to all requests that match the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      realm, independent of the presence, absence or value of the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Destination-Host AVP.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td> </td><td class="right">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   where a reacting node needs to apply different overload treatments</td><td> </td><td class="right">   where a reacting node needs to apply different overload treatments</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for different "types" of overload.  For example, the reacting node(s)</td><td> </td><td class="right">   for different "types" of overload.  For example, the reacting node(s)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   might need to throttle differently requests sent to a specific server</td><td> </td><td class="right">   might need to throttle differently requests sent to a specific server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (identified by the Destination-Host AVP in the request) and requests</td><td> </td><td class="right">   (identified by the Destination-Host AVP in the request) and requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that can be handled by any server in a realm.</td><td> </td><td class="right">   that can be handled by any server in a realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.7.  OC-Reduction-Percentage AVP</td><td> </td><td class="right">6.7.  OC-Reduction-Percentage AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td> </td><td class="right">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 20 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>69 lines changed or deleted</i></th><th><i> </i></th><th><i>54 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss ab
 atement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\n
 Internet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the O
 C-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type reque
 sts and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received with
 in OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer 
 of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also 
 delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of 
 the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change 
 the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm A
 VP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n    
   inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the
  overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n 
   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can
  always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not
  be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new redu
 ction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure
  that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These 
 new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breakin
 g\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by
  the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associat
 ed overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementati
 on decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algor
 ithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015            
     [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics 
 of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DO
 IC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field
  of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AV
 P concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n  
  Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n 
   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Valid
 ity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received
 \n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm
  AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the perc
 entage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n     
                                                     +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +---------------
 -----------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when us
 ed within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 
 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   disclosure of overload reports to unauthorized parties to avoid its\n   use fo
 r competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.
   That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Ther
 efore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.
   For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n
    When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes nev
 er send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give ope
 rators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These
  features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30
 ]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korh
 onen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                
       October 2014\n\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   
 long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent mod
 ifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based appli
 cations.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:
 \n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   
 various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By defini
 tion there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting th
 em could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that w
 ould decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correla
 ted and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      ses
 sion.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other sess
 ion-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session re
 quests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to tre
 at them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nR
 equirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Cop
 yright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . .
  . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Repo
 rting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  18\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . .
  . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n  
  11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implicat
 ions  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where som
 e\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redi
 recting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Di
 ameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on i
 ts own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC
 _Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support
  algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in th
 e transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the 
 previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-
 Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload co
 ntrol solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter ov
 erload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\
 n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement 
 algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixt
 ure of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports a
 nd realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for
  the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is 
 defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to 
 be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting no
 des to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n      
             +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm a
 nd then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC
 -Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MUST include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action
  to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatem
 ent algorithms\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include 
 the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it 
 sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting N
 odes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\
 n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes u
 pdate the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such
  OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP co
 ntains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which 
 the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is receiv
 ed for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload cont
 rol state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value (5 seconds) if the\n   OC-Validity-Duration AVP is absent.  The reacting node MUST maintain\n   the validity duration in the overload control state.  Once the\n   validity duration times out, the reacting node MUST assume the\n   overload condition reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expi
 res or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability 
 and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reporting node MAY choose to not send an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contain
 s the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Durati
 on set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n
    the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also res
 erve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  Th
 e abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   repo
 rt.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n 
   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.
 \n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for exampl
 e, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n
 \nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AV
 P\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves for two purposes.  First, it announces a node\'s support for\n   the DOIC in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n   A reacting node includes this AVP to indicate its capabilit
 ies to a\n   reporting node.  For example, the reacting node may indicate which\n   (future defined) traffic abatement algorithms it supports in addition\n   to the default.\n\n   During the message exchange the DOIC nodes express their common set\n   of supported capabilities.  The reacting node includes the OC-\n   Supported-Features AVP that announces what it supports.  The\n   reporting node that sends the answer also includes the OC-Supported-\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Features AVP that describes the capabilities it supports.  The set of\n   capabilities advertised by the reporting node depends on local\n   policies.  Since the loss abatement algorithm Section 5 is mandatory\n   to implement DOIC can always be enabled between these DOIC nodes.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned6
 4 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   necessary information to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header
 .  The identity the OC-OLR AVP\n   concerns is determined from the Origin-Host AVP (and Origin-Realm AVP\n   as well) found from the encapsulating Diameter command.  The OC-OLR\n   AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   The OC-Validity-Duration AVP indicates the validity time of the\n   overload report associated with a specific sequence number, measured\n   after reception of the OC-OLR AVP.  The validity time MUST NOT be\n   updated after reception of subsequent OC-OLR AVPs with the same\n   sequence number.  The default value for the OC-Validity-Duration AVP\n   value is 5 (i.e., 5 seconds).  When the OC-Validity-Duration AVP is\n   not present in the OC-OLR AVP, the default value applies.\n\n\n\nKorhonen, et al.         Expires
  April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter between two DOIC nodes.\n   The sequence number is only required to be unique between two DOIC\n   nodes.  Sequence numbers are treated in a uni-directional manner,\n   i.e. two sequence numbers on each direction between two DOIC nodes\n   are not related or correlated.\n\n   When generating sequence numbers, the new sequence nu
 mber MUST be\n   greater than any sequence number in an active overload report\n   previously sent by the reporting node.  This property MUST hold over\n   a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into acco
 unt by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Ty
 pe AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of th
 e\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n      Editor\'s note: There is still an open issue on the definition of\n      Realm reports and whether what report types should be supported.\n      There is consensus that host reports should be supported.  There\n      is discussion on Realm reports and Realm-Routed-Req
 uest reports.\n      The above definition applies to Realm-Routed-Request reports where\n      Realm reports are defined to apply to all requests that match the\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      realm, independent of the presence, absence or value of the\n      Destination-Host AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that 
 the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
 \n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V 
  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when u
 sed within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can
  be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   u
 se for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust m
 odel.  That is, a Diameter client or server can authorize an\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overloa
 d reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other p
 eers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n\n\n\nKorhonen, et al.  
        Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage o
 f\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST giv
 e operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n\n\n\nKorhonen, et al.         Expires April 23, 2015 
                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tscho
 fenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.
 \n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129
  272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_T
 OO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network
 .\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-base
 d applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Dia
 meter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handli
 ng\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean givi
 ng an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequ
 ence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers
  that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter ser
 ver.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseu
 do\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Sessi
 on-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseu
 do-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests mi
 ght be to treat them equally when making\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et 
 al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------020200010607080807080507--


From nobody Tue Oct 21 00:06:57 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B5531A6EE4 for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:03:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RxWLKut5ufio for <dime@ietfa.amsl.com>; Mon, 20 Oct 2014 10:03:15 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C603C1A8A0F for <dime@ietf.org>; Mon, 20 Oct 2014 09:50:47 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53107 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgGAP-0000vs-23 for dime@ietf.org; Mon, 20 Oct 2014 09:50:46 -0700
Message-ID: <54453D64.8030001@usdonovans.com>
Date: Mon, 20 Oct 2014 18:50:44 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------090806050006080704070208"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/LDVZen989yM5QeOsNccBPNoy3Xo
X-Mailman-Approved-At: Tue, 21 Oct 2014 00:06:24 -0700
Subject: [Dime] Resolution of Editor's Notes
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Oct 2014 17:03:19 -0000

This is a multi-part message in MIME format.
--------------090806050006080704070208
Content-Type: multipart/alternative;
 boundary="------------020605000706040506050305"


--------------020605000706040506050305
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

With this pass I attempted to resolve all Editor's Notes, as outlined below.

I've attached the diff file.

Regards,

Steve
---

Section 2 - This editor's note will be resolved when the issue on 
defining new terms is resolved.  As such, it is still in the document.

Section 4.2.1.2.

Removed the following paragraph plus the Editor's Note below it:

    Overload Control States for reporting nodes containing a validity
    duration of 0 sec. should not expire before any previously sent
    (stale) OLR has timed out at any reacting node.

    Editor's note: This statement is unclear and contradictory with other
    statements.  A validity timer of zero seconds indicates that the
    overload condition has ended and abatement is no longer requested.

Section 4.2.2

Removed the following Editor's note as this issue has been resolved:

       Editor's note: The above behavior for Realm reports is
       inconsistent with the definition of realm reports in section
       Section 6.6.

Section 7 - This editor's note deals with the response code issue 
resolution and will be removed when that issue is resolved.

In summary, two Editor's Notes remain and they are tied to currently 
open issues.

--------------020605000706040506050305
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    With this pass I attempted to resolve all Editor's Notes, as
    outlined below.<br>
    <br>
    I've attached the diff file.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    ---<br>
    <br>
    Section 2 - This editor's note will be resolved when the issue on
    defining new terms is resolved.&nbsp; As such, it is still in the
    document.<br>
    <br>
    Section 4.2.1.2.<br>
    <br>
    Removed the following paragraph plus the Editor's Note below it:<br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   Overload Control States for reporting nodes containing a validity
   duration of 0 sec. should not expire before any previously sent
   (stale) OLR has timed out at any reacting node.

   Editor's note: This statement is unclear and contradictory with other
   statements.  A validity timer of zero seconds indicates that the
   overload condition has ended and abatement is no longer requested.</pre>
    Section 4.2.2<br>
    <br>
    Removed the following Editor's note as this issue has been resolved:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>      Editor's note: The above behavior for Realm reports is
      inconsistent with the definition of realm reports in section
      Section 6.6.

</pre>
    Section 7 - This editor's note deals with the response code issue
    resolution and will be removed when that issue is resolved.<br>
    <br>
    In summary, two Editor's Notes remain and they are tied to currently
    open issues.<br>
  </body>
</html>

--------------020605000706040506050305--

--------------090806050006080704070208
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 28</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 28</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="delete">6</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">20</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="delete">1</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="delete">4</span></td><td> </td><td class="rblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="insert">3</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="delete">25</span></td><td> </td><td class="rblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="insert">24</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="delete">26</span></td><td> </td><td class="rblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="delete">2</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32</td><td> </td><td class="right">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Request Transaction Classification  . . . . . . . . . . .  35</td><td> </td><td class="right">     C.3.  Request Transaction Classification  . . . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 14, line 44</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 14, line 44</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Report type</td><td> </td><td class="right">   o  Report type</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Sequence number</td><td> </td><td class="right">   o  Sequence number</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Validity Duration and Expiry Time</td><td> </td><td class="right">   o  Validity Duration and Expiry Time</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Algorithm specific input data (e.g.  Reduction Percentage for</td><td> </td><td class="right">   o  Algorithm specific input data (e.g.  Reduction Percentage for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Loss)</td><td> </td><td class="right">      Loss)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Overload Control States for reporting nodes containing a validity</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   duration of 0 sec. should not expire before any previously sent</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (stale) OLR has timed out at any reacting node.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Editor's note: This statement is unclear and contradictory with other</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   statements.  A validity timer of zero seconds indicates that the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload condition has ended and abatement is no longer requested.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.3.  Maintaining Overload Control State</td><td> </td><td class="right">4.2.1.3.  Maintaining Overload Control State</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes create a host-type OCS identified by OCS-Id = (app-</td><td> </td><td class="right">   Reacting nodes create a host-type OCS identified by OCS-Id = (app-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   id,host-id) when receiving an answer message of application app-id</td><td> </td><td class="right">   id,host-id) when receiving an answer message of application app-id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless</td><td> </td><td class="right">   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   such host-type OCS already exists.</td><td> </td><td class="right">   such host-type OCS already exists.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-</td><td> </td><td class="right">   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   id,realm-id) when receiving an answer message of application app-id</td><td> </td><td class="right">   id,realm-id) when receiving an answer message of application app-id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</td><td> </td><td class="right">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 16, line 46</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 16, line 32</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   idea is that the reacting node applies different handling of the</td><td> </td><td class="right">   idea is that the reacting node applies different handling of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic abatement, whether sent request messages are targeted to a</td><td> </td><td class="right">   traffic abatement, whether sent request messages are targeted to a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specific host (identified by the Diameter-Host AVP in the request) or</td><td> </td><td class="right">   specific host (identified by the Diameter-Host AVP in the request) or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to any host in a realm (when only the Destination-Realm AVP is</td><td> </td><td class="right">   to any host in a realm (when only the Destination-Realm AVP is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   present in the request).  Note that future specifications MAY define</td><td> </td><td class="right">   present in the request).  Note that future specifications MAY define</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   new OC-Report-Type AVP values that imply different handling of the</td><td> </td><td class="right">   new OC-Report-Type AVP values that imply different handling of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP.  For example, in a form of new additional AVPs inside the</td><td> </td><td class="right">   OC-OLR AVP.  For example, in a form of new additional AVPs inside the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Grouped OC-OLR AVP that would define report target in a finer</td><td> </td><td class="right">   Grouped OC-OLR AVP that would define report target in a finer</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   granularity than just a host.</td><td> </td><td class="right">   granularity than just a host.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Editor's note: The above behavior for Realm reports is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      inconsistent with the definition of realm reports in section</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Section 6.6.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the OC-OLR AVP is received for the first time, the reacting node</td><td> </td><td class="right">   If the OC-OLR AVP is received for the first time, the reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   MUST create overload control state associated with the related realm</td><td> </td><td class="right">   MUST create overload control state associated with the related realm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   or a specific host in the realm identified in the message carrying</td><td> </td><td class="right">   or a specific host in the realm identified in the message carrying</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-OLR AVP, as described in Section 4.2.1.</td><td> </td><td class="right">   the OC-OLR AVP, as described in Section 4.2.1.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the value of the OC-Sequence-Number AVP contained in the received</td><td> </td><td class="right">   If the value of the OC-Sequence-Number AVP contained in the received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP is equal to or less than the value stored in an existing</td><td> </td><td class="right">   OC-OLR AVP is equal to or less than the value stored in an existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload control state, the received OC-OLR AVP SHOULD be silently</td><td> </td><td class="right">   overload control state, the received OC-OLR AVP SHOULD be silently</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discarded.  If the value of the OC-Sequence-Number AVP contained in</td><td> </td><td class="right">   discarded.  If the value of the OC-Sequence-Number AVP contained in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the received OC-OLR AVP is greater than the value stored in an</td><td> </td><td class="right">   the received OC-OLR AVP is greater than the value stored in an</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 8 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>19 lines changed or deleted</i></th><th><i> </i></th><th><i>7 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . . .  31\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss ab
 atement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\n
 Internet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the O
 C-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type reque
 sts and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received with
 in OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.
 \n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a react
 ing node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow wi
 ndow), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement,
  whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n 
   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   alre
 ady active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in
 \n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting
  node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload cont
 rol solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When de
 fining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section
  documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes 
 use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n 
       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting
  node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffi
 c reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 23, 2015              
   [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the
  guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of th
 e OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the react
 ing\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type A
 VP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MU
 ST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into
  account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially
  defined:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header 
 of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to 
 a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n
    node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n   
    +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described 
 in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  
 New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n
    Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, 
 or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report int
 o the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n
    overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cea
 se sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes
  need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peer
 s, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an o
 verload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism
  with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burba
 nk, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications 
 on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See 
 Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed re
 quests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating 
 the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications ar
 e\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draf
 t                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle
  them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which reques
 ts towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending request
 s\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diam
 eter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015             
    [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior r
 egarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of sub
 sequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and
  server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, 
 Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                   
                             L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.
   The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they descr
 ibe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n    
  4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . 
 . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n
      9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deploy
 ment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\
 n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Thr
 ottling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      i
 n which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node
  consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may
  act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node
  may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type de
 fines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the se
 rver that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true f
 or report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   R
 eporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement
 \n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 
 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported
 -Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features s
 upported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\
 n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed
  requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorith
 m\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no
  longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indic
 ated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]
 \n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A   
  Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also 
 include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of t
 he loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Featur
 es AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n 
   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC
 -Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id
  and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could i
 nclude the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n   Overload Control States for reporting nodes containing a validity\n   duration of 0 sec. should not expire before any previously sent\n   (stale) OLR has timed out at any reacting node.\n\n   Editor\'s note: This statement is unclear and contradictory with other\n   statements.  A validity timer of zero seconds indicates that the\n   overload condition has ended and abatement is no longer requested.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-
 id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of appli
 cation app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC      
                 October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintenti
 onal\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified
  by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n      Editor\'s note: The above behavior for Realm reports is\n      inconsistent with the definition of realm reports in section\n      Section 6.6.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described 
 in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the 
 OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A rep
 orting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include
  an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the hos
 t and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cl
 eanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n   
    expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be spec
 ified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in t
 he OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depen
 ds on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than th
 e indicated reduction percentage then the request is given\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report h
 anding specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.
 \n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amou
 nt of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such 
 a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-Feature-Vector sub-AVP 
 is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not
  explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR
  AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When ge
 nerating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report
  has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October
  2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      Th
 e value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n  
  might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 me
 ans that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Su
 pported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +----------------------
 ----------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n 
   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential t
 o be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may sha
 re a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unautho
 rized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the
  report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attack
 s\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the
  absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n\n\n\nKorhonen, et al.         Expires April 23, 2015                
 [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are author
 ized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of usin
 g any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              Ma
 y 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Mor
 and, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new 
 algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supportin
 g agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations
  to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes o
 f this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Th
 e Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another
  Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      reque
 sts.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining 
 a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the
  initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n\n\n\nKorhonen, et al.         Expires April 23, 201
 5                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism describe
 d in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-initiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where 
 the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests 
 that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and get rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\
 n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------090806050006080704070208--


From nobody Tue Oct 21 00:14:41 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DD07E1AD069 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:14:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.179
X-Spam-Level: **
X-Spam-Status: No, score=2.179 tagged_above=-999 required=5 tests=[BAYES_50=0.8, J_CHICKENPOX_24=0.6, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pJhpuZwvEP-Q for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:14:28 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 082C31AD068 for <dime@ietf.org>; Tue, 21 Oct 2014 00:14:28 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54853 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgTe4-000AGL-FA for dime@ietf.org; Tue, 21 Oct 2014 00:14:27 -0700
Message-ID: <544607C7.9070201@usdonovans.com>
Date: Tue, 21 Oct 2014 09:14:15 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------040602090603050609000905"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Oh5crbr7xMArpUhF67EzPcGWfVk
Subject: [Dime] Snapshot of -04
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 07:14:39 -0000

This is a multi-part message in MIME format.
--------------040602090603050609000905
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've attached the latest snapshot of the -04 draft resulting from 
yesterday's changes.

I would expect fewer changes today.

Steve

--------------040602090603050609000905
Content-Type: text/plain; charset=UTF-8;
 name="draft-ietf-dime-ovli-04.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="draft-ietf-dime-ovli-04.txt"





Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.
Internet-Draft                                                  Broadcom
Intended status: Standards Track                         S. Donovan, Ed.
Expires: April 23, 2015                                      B. Campbell
                                                                  Oracle
                                                               L. Morand
                                                             Orange Labs
                                                        October 20, 2014


                Diameter Overload Indication Conveyance
                      draft-ietf-dime-ovli-04.txt

Abstract

   This specification documents a Diameter Overload Control (DOC) base
   solution and the dissemination of the overload report information.

Requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 23, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents



Korhonen, et al.         Expires April 23, 2015                 [Page 1]

Internet-Draft                    DOIC                      October 2014


   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3
   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6
     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7
     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8
     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10
     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10
   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11
     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11
       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12
       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12
     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13
       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13
       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15
       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17
     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19
   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19
     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20
     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20
     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21
   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22
     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22
     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23
     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23
     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23
     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24
     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24
     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25
     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26
   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27
     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27
     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27
     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28
     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29
     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29



Korhonen, et al.         Expires April 23, 2015                 [Page 2]

Internet-Draft                    DOIC                      October 2014


     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29
   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31
     11.2.  Informative References . . . . . . . . . . . . . . . . .  31
   Appendix A.  Issues left for future specifications  . . . . . . .  31
     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32
     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32
     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32
   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32
   Appendix C.  Considerations for Applications Integrating the DOIC
                Solution . . . . . . . . . . . . . . . . . . . . . .  33
     C.1.  Application Classification  . . . . . . . . . . . . . . .  33
     C.2.  Application Type Overload Implications  . . . . . . . . .  34
     C.3.  Request Transaction Classification  . . . . . . . . . . .  35
     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37

1.  Introduction

   This specification defines a base solution for Diameter Overload
   Control (DOC), refered to as Diameter Overload Indication Conveyance
   (DOIC).  The requirements for the solution are described and
   discussed in the corresponding design requirements document
   [RFC7068].  Note that the overload control solution defined in this
   specification does not address all the requirements listed in
   [RFC7068].  A number of overload control related features are left
   for the future specifications.

   The solution defined in this specification addresses Diameter
   overload control between Diameter nodes that support the DOIC
   solution.  Furthermore, the solution is designed to apply to existing
   and future Diameter applications, requires no changes to the Diameter
   base protocol [RFC6733] and is deployable in environments where some
   Diameter nodes do not implement the Diameter overload control
   solution defined in this specification.

2.  Terminology and Abbreviations

   Abatement Algorithm

      An algorithm requested by reporting nodes and used by reacting
      nodes to reduce the amount of traffic sent during an occurrence of
      overload control.

   Throttling





Korhonen, et al.         Expires April 23, 2015                 [Page 3]

Internet-Draft                    DOIC                      October 2014


      Throttling is the reduction of the number of requests sent to an
      entity.  Throttling can include a client dropping requests, or an
      agent rejecting requests with appropriate error responses.
      Clients and agents can also choose to redirect throttled requests
      to some other entity or entities capable of handling them.

      Editor's note: Propose to add a definition of Abatement to include
      both throttling and diversion (redirecting of messages) actions.
      Then to modify this definition to include just the rejecting of
      requests and adding a definition of diversion.

   Reporting Node

      A Diameter node that generates an overload report.  (This may or
      may not be the overloaded node.)

   Reacting Node

      A Diameter node that consumes and acts upon a report.  Note that
      "act upon" does not necessarily mean the reacting node applies an
      abatement algorithm; it might decide to delegate that downstream,
      in which case it also becomes a "reporting node".

   Overload Control State (OCS)

      State describing an occurrence of overload control maintained by
      reporting and reacting nodes.

   Overload Report (OLR)

      A set of AVPs sent by a reporting node indicating the start or
      continuation of an occurrence of overload control.

3.  Solution Overview

   The Diameter Overload Information Conveyance (DOIC) mechanism allows
   Diameter nodes to request other nodes to perform overload abatement
   actions, that is, actions to reduce the load offered to the
   overloaded node or realm.

   A Diameter node that supports DOIC is known as a "DOIC node".  Any
   Diameter node can act as a DOIC node, including clients, servers, and
   agents.  DOIC nodes are further divided into "Reporting Nodes" and
   "Reacting Nodes."  A reporting node requests overload abatement by
   sending an Overload Report (OLR) to one or more reacting nodes.

   A reacting node consumes OLRs, and performs whatever actions are
   needed to fulfill the abatement requests included in the OLRs.  A



Korhonen, et al.         Expires April 23, 2015                 [Page 4]

Internet-Draft                    DOIC                      October 2014


   Reporting node may report overload on its own behalf, or on behalf of
   other (typically upstream) nodes.  Likewise, a reacting node may
   perform overload abatement on its own behalf, or on behalf of other
   (typically downstream) nodes.

   A node's role as a DOIC node is independent of its Diameter role.
   For example, Diameter relay and proxy agents may act as DOIC nodes,
   even though they are not endpoints in the Diameter sense.  Since
   Diameter enables bi-directional applications, where Diameter servers
   can send requests towards Diameter clients, a given Diameter node can
   simultaneously act as a reporting node and a reacting node.

   Likewise, a relay or proxy agent may act as a reacting node from the
   perspective of upstream nodes, and a reporting node from the
   perspective of downstream nodes.

   DOIC nodes do not generate new messages to carry DOIC related
   information.  Rather, they "piggyback" DOIC information over existing
   Diameter messages by inserting new AVPs into existing Diameter
   requests and responses.  Nodes indicate support for DOIC, and any
   needed DOIC parameters by inserting an OC_Supported_Features AVP
   (Section 6.2) into existing requests and responses.  Reporting nodes
   send OLRs by inserting OC-OLR AVPs (Section 6.3).

   A given OLR applies to the Diameter realm and application of the
   Diameter message that carries it.  If a reporting node supports more
   than one realm and/or application, it reports independently for each
   combination of realm and application.  Similarly, OC-Feature-Vector
   AVPs apply to the realm and application of the enclosing message.
   This implies that a node may support DOIC for one application and/or
   realm, but not another, and may indicate different DOIC parameters
   for each application and realm for which it supports DOIC.

   Reacting nodes perform overload abatement according to an agreed-upon
   abatement algorithm.  An abatement algorithm defines the meaning of
   the parameters of an OLR, and the procedures required for overload
   abatement.  This document specifies a single must-support algorithm,
   namely the "loss" algorithm Section 5).  Future specifications may
   introduce new algorithms.

   Overload conditions may vary in scope.  For example, a single
   Diameter node may be overloaded, in which case reacting nodes may
   reasonably attempt to send throttled requests to other destinations
   or via other agents.  On the other hand, an entire Diameter realm may
   be overloaded, in which case such attempts would do harm.  DOIC OLRs
   have a concept of "report type" (Section 6.6), where the type defines
   such behaviors.  Report types are extensible.  This document defines




Korhonen, et al.         Expires April 23, 2015                 [Page 5]

Internet-Draft                    DOIC                      October 2014


   report types for overload of a specific server, and for overload of
   an entire realm.

   A report of type host is sent to indicate the overload of a specific
   server for the application-id indicated in the transaction.  When
   receiving an OLR of type host, a reacting node applies overload
   abatement to what is referred to in this document as host-routed
   requests.  This is the set of requests that the reacting node knows
   will be served by a particular host, either due to the presence of a
   Destination-Host AVP, or by some other local knowledge on the part of
   the reacting node.  The reacting node applies overload abatement on
   those host-routed requests which the reacting node knows will be
   served by the server that matches the Origin-Host AVP of the received
   message that contained the received OLR of type host.

   A report type of realm is sent to indicate the overload of all
   servers in a realm for the application-id.  When receiving an OLR of
   type realm, a reacting node applies overload abatement to what is
   referred to in this document as realm-routed requests.  This is the
   set of requests that are not host-routed as defined in the previous
   paragraph.

   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes
   that are "adjacent" for DOIC purposes may not be adjacent from a
   Diameter, or transport, perspective.  For example, one or more
   Diameter agents that do not support DOIC may exist between a given
   pair of reporting and reacting nodes, as long as those agents pass
   unknown AVPs through unmolested.  The report types described in this
   document can safely pass through non-supporting agents.  This may not
   be true for report types defined in future specifications.  Documents
   that introduce new report types MUST describe any limitations on
   their use across non-supporting agents.

3.1.  Piggybacking Principle

   The overload control AVPs defined in this specification have been
   designed to be piggybacked on top of existing application message
   exchanges.  This is made possible by adding overload control top
   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as
   optional AVPs into existing commands when the corresponding Command
   Code Format (CCF) specification allows adding new optional AVPs (see
   Section 1.3.4 of [RFC6733]).

   Reacting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP all request messages originated or relayed by
   the Diameter node.





Korhonen, et al.         Expires April 23, 2015                 [Page 6]

Internet-Draft                    DOIC                      October 2014


   Reporting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in all answer messages originated or relayed
   by the Diameter node.  Reporting nodes also include overload reports
   using the OC-OLR AVP in answer messages.

      Note: There is no new Diameter application defined to carry
      overload related AVPs.  The DOIC AVPs are carried in existing
      Diameter application messages.

   Note that the overload control solution does not have fixed server
   and client roles.  The DOIC node role is determined based on the
   message type: whether the message is a request (i.e. sent by a
   "reacting node") or an answer (i.e. send by a "reporting node").
   Therefore, in a typical "client-server" deployment, the "client" MAY
   report its overload condition to the "server" for any server
   initiated message exchange.  An example of such is the server
   requesting a re-authentication from a client.

3.2.  DOIC Capability Announcement

   The DOIC solutions supports the ability for Diameter nodes to
   determine if other nodes in the path of a request support the
   solution.  This capability is refered to as DOIC Capability
   Announcement (DCA) and is separate from Diameter Capability Exchange.

   The DCA mechanism is built around the piggybacking principle used for
   transporting Diameter overload AVPs.  This includes both DCA AVPs and
   AVPs associated with Diameter overload reports.  This allows for the
   DCA AVPs to be carried across Diameter nodes that do not support the
   DOIC solution.

   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the
   Diameter overload features supported.

   The first node in the path of a Diameter request that supports the
   DOIC solution inserts the OC-Supported-Feature AVP in the request
   message.  This includes an indication that it supports the loss
   overload abatement algorithm defined in this specification (see
   Section 5).  This insures that there is at least one commonly
   supported overload abatement algorithm between the reporting node and
   the reacting nodes in the path of the request.

      DOIC must support deployments where Diameter Clients and/or
      Diameter servers do not support the DOIC solution.  In this
      scenario, it is assumed that Diameter Agents that support the DOIC
      solution will handle overload abatement for the non supporting
      clients.  In this case the DOIC agent will insert the OC-
      Supporting-Features AVP in requests that do not already contain



Korhonen, et al.         Expires April 23, 2015                 [Page 7]

Internet-Draft                    DOIC                      October 2014


      one, telling the reporting node that there is a DOIC node that
      will handle overload abatement.

   The reporting node inserts the OC-Supported-Feature AVP in all answer
   messages to requests that contained the OC-Supported-Feature AVP.
   The contents of the reporting node's OC-Supported-Feature AVP
   indicate the set of Diameter overload features supported by the
   reporting node with one exception.

   The reporting node only includes an indication of support for one
   overload abatement algorithm.  This is the algorithm that the
   reporting node intends to use should it enter an overload condition.
   Reacting nodes can use the indicated overload abatement algorithm to
   prepare for possible overload reports.

      Note that the loss algorithm defined in this document is a
      stateless abatement algorithm.  As a result it does not require
      any actions by reacting nodes prior to the receipt of an overload
      report.  Stateful abatement algorithms that base the abatement
      logic on a history of request messages sent might require reacting
      nodes to maintain state to insure that overload reports can be
      properly handled.

   The individual features supported by the DOIC nodes are indicated in
   the OC-Feature-Vector AVP.  Any semantics associated with the
   features will be defined in extension specifications that introduce
   the features.

   The DCA mechanism must also support the scenario where the set of
   features supported by the sender of a request and by agents in the
   path of a request differ.  In this case, the agent updates the OC-
   Supported-Feature AVP to reflect the mixture of the two sets of
   supported features.

      The logic to determine the content of the modified OC-Supported-
      Feature AVP is out-of-scope for this specification and is left to
      implementation decisions.  Care must be taken in doing so not to
      introduce interoperability issues for downstream or upstream DOIC
      nodes.

3.3.  DOIC Overload Condition Reporting

   As with DOIC Capability Announcement, Overload Condition Reporting
   uses new AVPs (Section 6.3) to indicate an overload condition.

   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP
   includes the type of report, an overload report ID, the length of
   time that the report is valid and abatement algorithm specific AVPs.



Korhonen, et al.         Expires April 23, 2015                 [Page 8]

Internet-Draft                    DOIC                      October 2014


   Two types of overload reports are defined in this document, host
   reports and realm reports.

   Host reports apply to traffic that is sent to a specific Diameter
   host.  The applies to requests that contain the Destination-Host AVP
   that contains a DiameterIdentity that matches that of the overload
   report.  These requests are referred to as host-routed requests.  A
   host report also applies to realm-routed requests, requests that do
   not have a Destination-Host AVP, when the selected route for the
   request is a connection to the impacted host.

   Realm reports apply to realm-routed requests for a specific realm as
   indicated in the Destination-Realm AVP.

   Reporting nodes are responsible for determining the need for a
   reduction of traffic.  The method for making this determination is
   implementation specific and depend on the type of overload report
   being generated.  A host report, for instance, will generally be
   generated by tracking utilization of resources required by the host
   to handle transactions for the the Diameter application.  A realm
   report will generally impact the traffic sent to multiple hosts and,
   as such, will typically require tracking the capacity of the servers
   able to handle realm-routed requests for the application.

   Once a reporting node determines the need for a reduction in traffic,
   it uses the DOIC defined AVPs to report on the condition.  These AVPs
   are included in answer messages sent or relayed by the reporting
   node.  The reporting node indicates the overload abatement algorithm
   that is to be used to handle the traffic reduction in the OC-
   Supported-Features AVP.  The OC-OLR AVP is used to communicate
   information about the requested reduction.

   Reacting nodes, upon receipt of an overload report, are responsible
   for applying the abatement algorithm to traffic impacted by the
   overload report.  The method used for that abatement is dependent on
   the abatement algorithm.  The loss abatement algorithm is defined in
   this document (Section 5).  Other abatement algorithms can be defined
   in extensions to the DOIC solutions.

   As the conditions that lead to the generation of the overload report
   change the reporting node can send new overload reports requesting
   greater reduction if the condition gets worse or less reduction if
   the condition improves.  The reporting node sends an overload report
   with a duration of zero to indicate that the overlaod condition has
   ended and use of the abatement algorithm is no longer needed.






Korhonen, et al.         Expires April 23, 2015                 [Page 9]

Internet-Draft                    DOIC                      October 2014


   The reacting node also determines when the overload report expires
   based on the OC-Validaty-Duration AVP in the overload report and
   stops applying the abatement algorithm when the report expires.

3.4.  DOIC Extensibility

   The DOIC solutions is designed to be extensible.  This extensibility
   is based on existing Diameter based extensibility mechanisms.

   There are multiple categories of extensions that are expected.  This
   includes the definition of new overload abatement algorithms, the
   definition of new report types and new definitions of the scope of
   messages impacted by an overload report.

   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes
   to communicate supported features.  The specific features supported
   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC
   extensions must define new values for the OC-Feature-Vector AVP.
   DOIC extensions also have the ability to add new AVPs to the OC-
   Supported-Features AVP, if additional information about the new
   feature is required to be communicate.

   Overload abatement algorithms use the OC-OLR AVP to communicate
   overload occurances.  This AVP can also be extended to add new AVPs
   allowing a reporting nodes to communicate additional information
   about handling an overload condition.

   If necessary, new extensions can also define new top level AVPs.  It
   is, however, recommended that DOIC extensions use the OC-Supported-
   Features and OC-OLR to carry all DOIC related AVPs.

3.5.  Simplified Example Architecture

   Figure 1 illustrates the simplified architecture for Diameter
   overload information conveyance.
















Korhonen, et al.         Expires April 23, 2015                [Page 10]

Internet-Draft                    DOIC                      October 2014


    Realm X                                  Same or other Realms
   <--------------------------------------> <---------------------->


      +--^-----+                 : (optional) :
      |Diameter|                 :            :
      |Server A|--+     .--.     : +---^----+ :     .--.
      +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+
                  +--(        )--:-|  Agent |-:--(        )--|Diameter|
      +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |
      |Diameter|--+  `--(___.-'  :            :  `--(___.-'  +-----^--+
      |Server B|                 :            :
      +---^----+                 :            :

                          End-to-end Overload Indication
             1)  <----------------------------------------------->
                             Diameter Application Y

                  Overload Indication A    Overload Indication A'
             2)  <----------------------> <---------------------->
                 standard base protocol   standard base protocol



     Figure 1: Simplified architecture choices for overload indication
                                 delivery

   In Figure 1, the Diameter overload indication can be conveyed (1)
   end-to-end between servers and clients or (2) between servers and
   Diameter agent inside the realm and then between the Diameter agent
   and the clients when the Diameter agent acting as back-to-back-agent
   for DOIC purposes.

4.  Solution Procedures

   This section outlines the normative behavior associated with the DOIC
   solution.

4.1.  Capability Announcement

   This section defines DOIC Capability Announcement (DCA) behavior.

   The DCA procedures are used to indicate support for DOIC and support
   for DOIC features.  The DOIC features include overload abatement
   algorithms supported.  It might also include new report types or
   other extensions documented in the future.





Korhonen, et al.         Expires April 23, 2015                [Page 11]

Internet-Draft                    DOIC                      October 2014


   Diameter nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in messages sent or handled by the node.

   Diameter agents that support DOIC MUST ensure that all messages have
   the OC-Supporting-Features AVP.  If a message handled by the DOIC
   agent does not include the OC-Supported-Features AVP then the DOIC
   agent inserts the AVP.  If the message already has the AVP then the
   agent either leaves it unchanged in the relayed message or modifies
   it to reflect a mixed set of DOIC features.

4.1.1.  Reacting Node Behavior

   A reacting node MUST include the OC-Supported-Features AVP in all
   request messages.

   A reacting node MAY include the OC-Feature-Vector AVP with an
   indication of the loss algorithm.  A reacting node MUST include the
   OC-Feature-Vector AVP to indicate support for abatement algorithms in
   addition to the loss algorithm.

   A reacting node SHOULD indicate support for all other DOIC features
   it supports.

   An OC-Supported-Features AVP in answer messages indicates there is a
   reporting node for the transaction.  The reacting node MAY take
   action based on the features indicated in the OC-Feature-Vector AVP.

      Note that the loss abatement algorithm is the only feature
      described in this document and it does not require action to be
      taken when there is an active overload report.  This behavior is
      described in Section 4.2 and Section 5.

4.1.2.  Reporting Node Behavior

   Upon receipt of a request message, a reporting node determines if
   there is a reacting node for the transaction based on the presence of
   the OC-Supported-Features AVP.

   Based on the content of the OC-Supported-Features AVP in the request
   message, the reporting node knows what overload control functionality
   supported by reacting node(s).  The reporting node then acts
   accordingly for the subsequent answer messages it initiates.

   If the reqeust message contains an OC-Supported-Features AVP then the
   reporting node MUST include the OC-Supported-Features AVP in the
   answer message for that transaction.





Korhonen, et al.         Expires April 23, 2015                [Page 12]

Internet-Draft                    DOIC                      October 2014


   The reporting node MUST indicate support for one and only one
   abatement algorithm in the OC-Feature-Vector AVP.  The abatement
   algorithm included MUST be from the set of abatement algorithms
   contained in the request messages OC-Supported-Features AVP.  The
   abatement algorithm included indicates the abatement algorithm the
   reporting node wants the reacting node to use when the reporting node
   enters an overload condition.

   The reporting node MUST NOT change the selected algorithm during a
   period of time that it is in an overload condition and, as a result,
   is sending OC-OLR AVPs in answer messages.

   The reporting node SHOULD indicate support for other DOIC features it
   supports and that apply to the transaction.

      Note that not all DOIC features will apply to all Diameter
      applications or deployment scenarios.  The features included in
      the OC-Feature-Vector AVP is based on local reporting node policy.

   The reporting node MUST NOT include the OC-Supported-Features AVP,
   OC-OLR AVP or any other overload control AVPs defined in extension
   drafts in response messages for transactions where the request
   message does not include the OC-Supported-Features AVP.  Lack of the
   OC-Supported-Features AVP in the request message indicates that there
   is no reacting node for the transaction.

   An agent MAY modify the OC-Supported-Features AVP carried in answer
   messages.

4.2.  Overload Report Processing

4.2.1.  Overload Control State

   Both reacting and reporting nodes maintain an overload control state
   (OCS) for active overload reports.

4.2.1.1.  Overload Control State for Reacting Nodes

   A reacting node maintains the following OCS per supported Diameter
   application:

   o  A host-type Overload Control State for each Destination-Host
      towards which it sends host-type requests and

   o  A realm-type Overload Control State for each Destination-Realm
      towards which it sends realm-type requests.





Korhonen, et al.         Expires April 23, 2015                [Page 13]

Internet-Draft                    DOIC                      October 2014


   A host-type Overload Control State may be identified by the pair of
   Application-Id and Destination-Host.  A realm-type Overload Control
   State may be identified by the pair of Application-Id and
   Destination-Realm.  The host-type/realm-type Overload Control State
   for a given pair of Application and Destination-Host / Destination-
   Realm could include the following information:

   o  Sequence number (as received in OC-OLR)

   o  Time of expiry (deviated from validity duration as received in OC-
      OLR and time of reception)

   o  Selected Abatement Algorithm (as received in OC-Supported-
      Features)

   o  Algorithm specific input data (as received within OC-OLR, e.g.
      Reduction Percentage for Loss)

4.2.1.2.  Overload Control States for Reporting Nodes

   A reporting node maintains per supported Diameter application and per
   supported (and eventually selected) Abatement Algorithm an Overload
   Control State.

   An Overload Control State may be identified by the pair of
   Application-Id and supported Abatement Algorithm.

   The Overload Control State for a given pair of Application and
   Abatement Algorithm could include the information:

   o  Report type

   o  Sequence number

   o  Validity Duration and Expiry Time

   o  Algorithm specific input data (e.g.  Reduction Percentage for
      Loss)

4.2.1.3.  Maintaining Overload Control State

   Reacting nodes create a host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless
   such host-type OCS already exists.

   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id



Korhonen, et al.         Expires April 23, 2015                [Page 14]

Internet-Draft                    DOIC                      October 2014


   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP
   unless such realm type OCS already exists.

   Reacting nodes delete an OCS when it expires (i.e. when current time
   minus reception time is greater than validity duration).

   Reacting nodes also delete on OCS with an updated OLR is received
   with a validity duration of zero.

   Reacting nodes update the host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a
   sequence number higher than the stored sequence number.

   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id
   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with
   a sequence number higher than the stored sequence number.

   Reacting nodes do not delete an OCS when receiving an answer message
   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no
   change").

   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)
   when receiving a request of application app-id containing an OC-
   Supported-Features AVP indicating support of the Abatement Algorithm
   Alg (which the reporting node selects) while being overloaded, unless
   such OCS already exists.

   Reporting nodes delete an OCS when it expires.

   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)
   when they detect the need to modify the requested amount of
   application app-id traffic reduction.

4.2.2.  Reacting Node Behavior

   Once a reacting node receives an OC-OLR AVP from a reporting node, it
   applies traffic abatement based on the selected algorithm with the
   reporting node and the current overload condition.  The reacting node
   learns the reporting node supported abatement algorithms directly
   from the received answer message containing the OC-Supported-Features
   AVP.

   The received OC-Supported-Features AVP does not change the existing
   overload condition and/or traffic abatement algorithm settings if the
   OC-Sequence-Number AVP contains a value that is equal to the
   previously received/recorded value.  If the OC-Supported-Features AVP



Korhonen, et al.         Expires April 23, 2015                [Page 15]

Internet-Draft                    DOIC                      October 2014


   is received for the first time for the reporting node or the OC-
   Sequence-Number AVP value is less than the previously received/
   recorded value (and is outside the valid overflow window), then the
   sequence number is stale (e.g. an intentional or unintentional
   replay) and SHOULD be silently discarded.

   As described in Section 6.3, the OC-OLR AVP contains the necessary
   information for the overload condition on the reporting node.

   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting
   node learns whether the overload condition report concerns a specific
   host (as identified by the Origin-Host AVP of the answer message
   containing the OC-OLR AVP) or the entire realm (as identified by the
   Origin-Realm AVP of the answer message containing the OC-OLR AVP).
   The reacting node learns the Diameter application to which the
   overload report applies from the Application-ID of the answer message
   containing the OC-OLR AVP.  The reacting node MUST use this
   information as an input for its traffic abatement algorithm.  The
   idea is that the reacting node applies different handling of the
   traffic abatement, whether sent request messages are targeted to a
   specific host (identified by the Diameter-Host AVP in the request) or
   to any host in a realm (when only the Destination-Realm AVP is
   present in the request).  Note that future specifications MAY define
   new OC-Report-Type AVP values that imply different handling of the
   OC-OLR AVP.  For example, in a form of new additional AVPs inside the
   Grouped OC-OLR AVP that would define report target in a finer
   granularity than just a host.

   If the OC-OLR AVP is received for the first time, the reacting node
   MUST create overload control state associated with the related realm
   or a specific host in the realm identified in the message carrying
   the OC-OLR AVP, as described in Section 4.2.1.

   If the value of the OC-Sequence-Number AVP contained in the received
   OC-OLR AVP is equal to or less than the value stored in an existing
   overload control state, the received OC-OLR AVP SHOULD be silently
   discarded.  If the value of the OC-Sequence-Number AVP contained in
   the received OC-OLR AVP is greater than the value stored in an
   existing overload control state or there is no previously recorded
   sequence number, the reacting node MUST update the overload control
   state associated with the realm or the specific node in the realm.

   When an overload control state is created or updated, the reacting
   node MUST apply the traffic abatement requested in the OC-OLR AVP
   using the algorithm announced in the OC-Supported-Features AVP
   contained in the received answer message along with the OC-OLR AVP.





Korhonen, et al.         Expires April 23, 2015                [Page 16]

Internet-Draft                    DOIC                      October 2014


   The validity duration of the overload information contained in the
   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration
   AVP or is implicitly equals to the default value if the OC-Validity-
   Duration AVP is absent.  The reacting node MUST maintain the validity
   duration in the overload control state.  Once the validity duration
   times out, the reacting node MUST assume the overload condition
   reported in a previous OC-OLR AVP has ended.

   A value of zero ("0") received in the OC-Validity-Duration in an
   updated overload report indicates that the overload condition has
   ended and that the overload state is no longer valid.

   In the case that the validity duration expires or is explicitly
   signaled as being no longer valid the state associated with the
   overload report MUST be removed and any abatement associated with the
   overload report MUST be ended in a controlled fashion.  After
   removing the overload state the sequence number MUST NOT be used for
   future comparisons of sequence numbers.

4.2.3.  Reporting Node Behavior

   A reporting node is a Diameter node inserting an OC-OLR AVP in a
   Diameter message in order to inform a reacting node about an overload
   condition and request Diameter traffic abatement.

   The operation on the reporting node is straight forward.  The
   reporting node learns the capabilities of the reacting node when it
   receives the OC-Supported-Features AVP as part of any Diameter
   request message.  Since the loss abatement algorithm Section 5 is
   mandatory to implement DOIC can always be enabled between these DOIC
   nodes See Section 4.1 for further discussion on the capability and
   feature announcement.

   When a traffic reduction is required due to an overload condition and
   the overload control solution is supported by the sender of the
   Diameter request, the reporting node SHOULD include an OC-Supported-
   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.

   A reporting node MAY choose to not resend an overload report to a
   reacting node if it can guarantee that this overload report is
   already active in the reacting node.

      Note - In some cases (e.g. when there are one or multiple agents
      in the path between reporting and reacting nodes, or when overload
      reports are discarded by reacting nodes) the reporting node may
      not be able to guarantee that the reacting node has received the
      report.




Korhonen, et al.         Expires April 23, 2015                [Page 17]

Internet-Draft                    DOIC                      October 2014


   The OC-OLR AVP contains the required traffic reduction and the OC-
   Supported-Features AVP indicates the traffic abatement algorithm to
   apply.  This algorithm MUST be one of the algorithms advertised by
   the request sender.

   A reporting node MUST only send overload reports of a type advertised
   as supported by the reacting node.

      Note that a reacting node advertises support for the host and
      realm report types by including the OC-Supported-Features AVP in
      the request.  Support for other report types must be explicitly
      indicated by a new feature bit in the OC-Feature-Vector AVP.

   If OLR is for a new overload condition and there is no unexpired
   overload report for previous overload conditions at any reacting node
   then the reporting node MAY set the sequence number to any value.

   The reacting node MAY update the overload report with new reduction
   percentages.  When doing so, the reacting node MUST increase the
   sequence number in the new OLR sent.

   When generating sequence numbers for , the new sequence number MUST
   be greater than any sequence number in an active (unexpired) overload
   report previously sent by the reporting node.  This property MUST
   hold over a reboot of the reporting node.

   A reporting node MAY rely on the OC-Validity-Duration AVP values for
   the implicit overload control state cleanup on the reacting node.
   However, it is RECOMMENDED that the reporting node always explicitly
   indicates the end of a overload condition.

   The reporting node SHOULD indicate the end of an overload occurrence
   by sending a new OLR with OC-Validity-Duration set to a value of zero
   ("0").  The reporting node SHOULD insure that all reacting nodes
   receive the updated overload report.

      All OLRs sent have an expiration time calculated by adding the
      validity-duration contained in the OLR to the time the message was
      sent.  Transit time for the OLR can be safely ignored.  The
      reporting node can ensure that all reacting nodes have received
      the OLR by continuing to send it in answer messages until the
      expiration time for all OLRs sent for that overload contition have
      expired.








Korhonen, et al.         Expires April 23, 2015                [Page 18]

Internet-Draft                    DOIC                      October 2014


4.3.  Protocol Extensibility

   The overload control solution can be extended, e.g. with new traffic
   abatement algorithms, new report types or other new functionality.

   When defining a new extension a new feature bit MUST be defined for
   the OC-Feature-Vector.  This feature bit is used to communicate
   support for the new feature.

   The extention may also define new AVPs for use in DOIC Capability
   Anouncement and for use in DOIC Overload reporting.  These new AVP
   should be defined to be extensions to the OC-Supported-Features and
   OC-OLR AVPs defined in this document.

   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.

   The handling of feature bits in the OC-Feature-Vector AVP that are
   not associated with overload abatement algorithms MUST be specified
   by the extensions that define the features.

   When defining new report type values, the corresponding specification
   MUST define the semantics of the new report types and how they affect
   the OC-OLR AVP handling.  The specification MUST also reserve a
   corresponding new feature, see the OC-Supported-Features and OC-
   Feature-Vector AVPs.

   The OC-OLR AVP can be expanded with optional sub-AVPs only if a
   legacy implementation can safely ignore them without breaking
   backward compatibility for the given OC-Report-Type AVP value implied
   report handling semantics.  If the new sub-AVPs imply new semantics
   for handling the indicated report type, then a new OC-Report-Type AVP
   value MUST be defined.

   New features (feature bits in the OC-Feature-Vector AVP) and report
   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As
   with any Diameter specification, new AVPs MUST also be registered
   with IANA.  See Section 8 for the required procedures.

5.  Loss Algorithm

   This section documents the Diameter overload loss abatement
   algorithm.






Korhonen, et al.         Expires April 23, 2015                [Page 19]

Internet-Draft                    DOIC                      October 2014


5.1.  Overview

   The DOIC specification supports the ability for multiple overload
   abatement algorithms to be specified.  The abatement algorithm used
   for any instance of overload is determined by the Diameter Overload
   Capability Announcement process documented in Section 4.1.

   The loss algorithm described in this section is the default algorithm
   that must be supported by all Diameter nodes that support DOIC.

   The loss algorithm is designed to be a straightforward and stateless
   overload abatement algorithm.  It is used by reporting nodes to
   request a percentage reduction in the amount of traffic sent.  The
   traffic impacted by the requested reduction depends on the type of
   overload report.

   Reporting nodes use a strategy of applying abatement logic to the
   requested percentage of request messages sent (or handled in the case
   of agents) by the reacting node that are impacted by the overload
   report.

   From a conceptual level, the logic at the reacting node could be
   outlined as follows.  In this discussion assume that the reacting
   node is also the sending node.

   1.  An overload report is received and the associated overload state
       is saved by the reacting node.

   2.  A new Diameter request is generated by the application running on
       the reacting node.

   3.  The reacting node determines that an active overload report
       applies to the request.

   4.  The reacting node determines if abatement should be applied to
       the request.  One approach that could be taken would be to select
       a random number between 1 and 100.  If the random number is less
       than the indicated reduction percentage then the request is given
       abatement treatment, otherwise the request is given normal
       routing treatment.

5.2.  Reporting Node Behavior

   The method a reporting nodes uses to determine the amount of traffic
   reduction required to address an overload condition is an
   implementation decision.





Korhonen, et al.         Expires April 23, 2015                [Page 20]

Internet-Draft                    DOIC                      October 2014


   When a reporting node that has selected the loss abatement algorithm
   determines the need to request a traffic reduction it includes an OC-
   OLR AVP in response messages as described in Section 4.2.3.

   The reporting node must indicate a percentage reduction in the OC-
   Reduction-Percentage AVP.

   The reporting node may change the reduction percentage in subsequent
   overload reports.  When doing so the reporting node must conform to
   overload report handing specified in Section 4.2.3.

   When the reporting node determines it no longer needs a reduction in
   traffic the reporting node should send an overload report indicating
   the overload report is no longer valid, as specified in
   Section 4.2.3.

5.3.  Reacting Node Behavior

   The method a reacting node uses to determine which request messages
   are given abatement treatment is an implementation decision.

   When receiving an OC-OLR in an answer message where the algorithm
   indicated in the OC-Supported-Features AVP is the loss algorithm, the
   reacting node must attempt to apply abatement treatment to the
   requested percentage of request messages sent.

      Note: the loss algorithm is a stateless algorithm.  As a result,
      the reacting node does not guarantee that there will be an
      absolute reduction in traffic sent.  Rather, it guarantees that
      the requested percentage of new requests will be given abatement
      treatment.

   If reacting node comes out of the 100 percent traffic reduction as a
   result of the overload report timing out, the following concerns are
   RECOMMENDED to be applied.  The reacting node sending the traffic
   should be conservative and, for example, first send "probe" messages
   to learn the overload condition of the overloaded node before
   converging to any traffic amount/rate decided by the sender.  Similar
   concerns apply in all cases when the overload report times out unless
   the previous overload report stated 0 percent reduction.

   If the reacting node does not receive a an OLR in messages sent to
   the formally overloaded node then the reacting node should slowly
   increase the rate of traffic sent to the overloaded node.

   It is suggested that the reacting node decrease the amount of traffic
   given abatement treatment by 20% each second until the reduction is
   completely removed and no traffic is given abatement treatment.



Korhonen, et al.         Expires April 23, 2015                [Page 21]

Internet-Draft                    DOIC                      October 2014


      The goal of this behavior is to reduce the probability of overload
      condition thrashing where an immediate transition from 100%
      reduction to 0% reduction results in the reporting node moving
      quickly back into an overload condition.

6.  Attribute Value Pairs

   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.

   When added to existing commands, both OC-Feature-Vector and OC-OLR
   AVPs SHOULD have the M-bit flag cleared to avoid backward
   compatibility issues.

   A new application specification can incorporate the overload control
   mechanism specified in this document by making it mandatory to
   implement for the application and referencing this specification
   normatively.  In such a case, the rules for handling of the M-bit
   must follow the guidance in [RFC6733].  It is the responsibility of
   the Diameter application designers to define how overload control
   mechanisms works on that application.

6.1.  OC-Supported-Features AVP

   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and
   serves two purposes.  First, it announces a node's support for the
   DOIC solution in general.  Second, it contains the description of the
   supported DOIC features of the sending node.  The OC-Supported-
   Features AVP MUST be included in every Diameter message a DOIC
   supporting node sends.

      OC-Supported-Features ::= < AVP Header: TBD1 >
                                [ OC-Feature-Vector ]
                              * [ AVP ]


   The OC-Feature-Vector sub-AVP is used to announce the DOIC features
   supported by the DOIC node, in the form of a flag bits field in which
   each bit announces one feature or capability supported by the node
   (see Section 6.2).  The absence of the OC-Feature-Vector AVP
   indicates that only the default traffic abatement algorithm described
   in this specification is supported.








Korhonen, et al.         Expires April 23, 2015                [Page 22]

Internet-Draft                    DOIC                      October 2014


6.2.  OC-Feature-Vector AVP

   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and
   contains a 64 bit flags field of announced capabilities of a DOIC
   node.  The value of zero (0) is reserved.

   The following capabilities are defined in this document:

   OLR_DEFAULT_ALGO (0x0000000000000001)

      When this flag is set by the DOIC node it means that the default
      traffic abatement (loss) algorithm is supported.

6.3.  OC-OLR AVP

   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the
   information necessary to convey an overload report.  The OC-OLR AVP
   does not explicitly contain all information needed by the reacting
   node to decide whether a subsequent request must undergo a throttling
   process with the received reduction percentage.  The value of the OC-
   Report-Type AVP within the OC-OLR AVP indicates which implicit
   information is relevant for this decision (see Section 6.6).  The
   application the OC-OLR AVP applies to is the same as the Application-
   Id found in the Diameter message header.  The host or realm the OC-
   OLR AVP concerns is determined from the Origin-Host AVP and/or
   Origin-Realm AVP found in the encapsulating Diameter command.  The
   OC-OLR AVP is intended to be sent only by a reporting node.

      OC-OLR ::= < AVP Header: TBD2 >
                 < OC-Sequence-Number >
                 < OC-Report-Type >
                 [ OC-Reduction-Percentage ]
                 [ OC-Validity-Duration ]
               * [ AVP ]


   Note that if a Diameter command were to contain multiple OC-OLR AVPs
   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs
   with unknown values SHOULD be silently discarded and the event SHOULD
   be logged.

6.4.  OC-Sequence-Number AVP

   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.
   Its usage in the context of overload control is described in
   Section 4.2.





Korhonen, et al.         Expires April 23, 2015                [Page 23]

Internet-Draft                    DOIC                      October 2014


   From the functionality point of view, the OC-Sequence-Number AVP MUST
   be used as a non-volatile increasing counter for a sequence of
   overload reports between two DOIC nodes for the same overload
   occurrence.  The sequence number is only required to be unique
   between two DOIC nodes.  Sequence numbers are treated in a uni-
   directional manner, i.e. two sequence numbers on each direction
   between two DOIC nodes are not related or correlated.

   When generating sequence numbers, the new sequence number MUST be
   greater than any sequence number in an active, unexpired, overload
   report previously sent by the reporting node.  This property MUST
   hold over a reboot of the reporting node.

6.5.  OC-Validity-Duration AVP

   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32
   and indicates in seconds the validity time of the overload report.
   The number of seconds is measured after reception of the first OC-OLR
   AVP with a given value of OC-Sequence-Number AVP.  The default value
   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the
   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the
   default value applies.  Validity duration with values above 86400
   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are
   treated as if the OC-Validity-Duration AVP were not present and
   result in the default value being used.

   A timeout of the overload report has specific concerns that need to
   be taken into account by the DOIC node acting on the earlier received
   overload report(s).  Section 6.7 discusses the impacts of timeout in
   the scope of the traffic abatement algorithms.

   When a reporting node has recovered from overload, it SHOULD
   invalidate any existing overload reports in a timely matter.  This
   can be achieved by sending an updated overload report (meaning the
   OLR contains a new sequence number) with the OC-Validity-Duration AVP
   value set to zero ("0").  If the overload report is about to expire
   naturally, the reporting node MAY choose to simply let it do so.

   A reacting node MUST invalidate and remove an overload report that
   expires without an explicit overload report containing an OC-
   Validity-Duration value set to zero ("0").

6.6.  OC-Report-Type AVP

   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The
   value of the AVP describes what the overload report concerns.  The
   following values are initially defined:




Korhonen, et al.         Expires April 23, 2015                [Page 24]

Internet-Draft                    DOIC                      October 2014


   0  A host report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      Either the Destination-Host AVP is present in the request and its
      value matches the value of the Origin-Host AVP of the received
      message that contained the OC-OLR AVP; or the Destination-Host is
      not present in the request but the value of peer identity
      associated with the connection used to send the request matches
      the value of the Origin-Host AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

   1  A realm report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      The Destination-Host AVP is absent in the request.

      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

   The OC-Report-Type AVP is envisioned to be useful for situations
   where a reacting node needs to apply different overload treatments
   for different "types" of overload.  For example, the reacting node(s)
   might need to throttle differently requests sent to a specific server
   (identified by the Destination-Host AVP in the request) and requests
   that can be handled by any server in a realm.

6.7.  OC-Reduction-Percentage AVP

   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32
   and describes the percentage of the traffic that the sender is
   requested to reduce, compared to what it otherwise would send.  The
   OC-Reduction-Percentage AVP applies to the default (loss) algorithm
   specified in this specification.  However, the AVP can be reused for
   future abatement algorithms, if its semantics fit into the new
   algorithm.



Korhonen, et al.         Expires April 23, 2015                [Page 25]

Internet-Draft                    DOIC                      October 2014


   The value of the Reduction-Percentage AVP is between zero (0) and one
   hundred (100).  Values greater than 100 are ignored.  The value of
   100 means that all traffic is to be throttled, i.e. the reporting
   node is under a severe load and ceases to process any new messages.
   The value of 0 means that the reporting node is in a stable state and
   has no need for the reacting node to apply any traffic abatement.
   The default value of the OC-Reduction-Percentage AVP is 0.  When the
   OC-Reduction-Percentage AVP is not present in the overload report,
   the default value applies.

6.8.  Attribute Value Pair flag rules

                                                         +---------+
                                                         |AVP flag |
                                                         |rules    |
                                                         +----+----+
                              AVP   Section              |    |MUST|
       Attribute Name         Code  Defined  Value Type  |MUST| NOT|
      +--------------------------------------------------+----+----+
      |OC-Supported-Features  TBD1  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-OLR                 TBD2  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Sequence-Number     TBD3  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Validity-Duration   TBD4  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Report-Type         TBD5  x.x      Enumerated  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Reduction                                      |    |    |
      |  -Percentage          TBD8  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Feature-Vector      TBD6  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+


   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP.

   The Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.  Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set.






Korhonen, et al.         Expires April 23, 2015                [Page 26]

Internet-Draft                    DOIC                      October 2014


7.  Error Response Codes

   Editor's note: This section depends on resolution of issue #27.

8.  IANA Considerations

8.1.  AVP codes

   New AVPs defined by this specification are listed in Section 6.  All
   AVP codes allocated from the 'Authentication, Authorization, and
   Accounting (AAA) Parameters' AVP Codes registry.

8.2.  New registries

   Three new registries are needed under the 'Authentication,
   Authorization, and Accounting (AAA) Parameters' registry.

   Section 6.2 defines a new "Overload Control Feature Vector" registry
   including the initial assignments.  New values can be added into the
   registry using the Specification Required policy [RFC5226].  See
   Section 6.2 for the initial assignment in the registry.

   Section 6.6 defines a new "Overload Report Type" registry with its
   initial assignments.  New types can be added using the Specification
   Required policy [RFC5226].

9.  Security Considerations

   This mechanism gives Diameter nodes the ability to request that
   downstream nodes send fewer Diameter requests.  Nodes do this by
   exchanging overload reports that directly affect this reduction.
   This exchange is potentially subject to multiple methods of attack,
   and has the potential to be used as a Denial-of-Service (DoS) attack
   vector.

   Overload reports may contain information about the topology and
   current status of a Diameter network.  This information is
   potentially sensitive.  Network operators may wish to control
   disclosure of overload reports to unauthorized parties to avoid its
   use for competitive intelligence or to target attacks.

   Diameter does not include features to provide end-to-end
   authentication, integrity protection, or confidentiality.  This may
   cause complications when sending overload reports between non-
   adjacent nodes.






Korhonen, et al.         Expires April 23, 2015                [Page 27]

Internet-Draft                    DOIC                      October 2014


9.1.  Potential Threat Modes

   The Diameter protocol involves transactions in the form of requests
   and answers exchanged between clients and servers.  These clients and
   servers may be peers, that is,they may share a direct transport (e.g.
   TCP or SCTP) connection, or the messages may traverse one or more
   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,
   DTLS, or IPSec to authenticate peers, and to provide confidentiality
   and integrity protection of traffic between peers.  Nodes can make
   authorization decisions based on the peer identities authenticated at
   the transport layer.

   When agents are involved, this presents an effectively hop-by-hop
   trust model.  That is, a Diameter client or server can authorize an
   agent for certain actions, but it must trust that agent to make
   appropriate authorization decisions about its peers, and so on.

   Since confidentiality and integrity protection occurs at the
   transport layer.  Agents can read, and perhaps modify, any part of a
   Diameter message, including an overload report.

   There are several ways an attacker might attempt to exploit the
   overload control mechanism.  An unauthorized third party might inject
   an overload report into the network.  If this third party is upstream
   of an agent, and that agent fails to apply proper authorization
   policies, downstream nodes may mistakenly trust the report.  This
   attack is at least partially mitigated by the assumption that nodes
   include overload reports in Diameter answers but not in requests.
   This requires an attacker to have knowledge of the original request
   in order to construct a response.  Therefore, implementations SHOULD
   validate that an answer containing an overload report is a properly
   constructed response to a pending request prior to acting on the
   overload report.

   A similar attack involves an otherwise authorized Diameter node that
   sends an inappropriate overload report.  For example, a server for
   the realm "example.com" might send an overload report indicating that
   a competitor's realm "example.net" is overloaded.  If other nodes act
   on the report, they may falsely believe that "example.net" is
   overloaded, effectively reducing that realm's capacity.  Therefore,
   it's critical that nodes validate that an overload report received
   from a peer actually falls within that peer's responsibility before
   acting on the report or forwarding the report to other peers.  For
   example, an overload report from an peer that applies to a realm not
   handled by that peer is suspect.

   An attacker might use the information in an overload report to assist
   in certain attacks.  For example, an attacker could use information



Korhonen, et al.         Expires April 23, 2015                [Page 28]

Internet-Draft                    DOIC                      October 2014


   about current overload conditions to time a DoS attack for maximum
   effect, or use subsequent overload reports as a feedback mechanism to
   learn the results of a previous or ongoing attack.

9.2.  Denial of Service Attacks

   Diameter overload reports can cause a node to cease sending some or
   all Diameter requests for an extended period.  This makes them a
   tempting vector for DoS tacks.  Furthermore, since Diameter is almost
   always used in support of other protocols, a DoS attack on Diameter
   is likely to impact those protocols as well.  Therefore, Diameter
   nodes MUST NOT honor or forward overload reports from unauthorized or
   otherwise untrusted sources.

9.3.  Non-Compliant Nodes

   When a Diameter node sends an overload report, it cannot assume that
   all nodes will comply.  A non-compliant node might continue to send
   requests with no reduction in load.  Requirement 28 [RFC7068]
   indicates that the overload control solution cannot assume that all
   Diameter nodes in a network are necessarily trusted, and that
   malicious nodes not be allowed to take advantage of the overload
   control mechanism to get more than their fair share of service.

   In the absence of an overload control mechanism, Diameter nodes need
   to implement strategies to protect themselves from floods of
   requests, and to make sure that a disproportionate load from one
   source does not prevent other sources from receiving service.  For
   example, a Diameter server might reject a certain percentage of
   requests from sources that exceed certain limits.  Overload control
   can be thought of as an optimization for such strategies, where
   downstream nodes never send the excess requests in the first place.
   However, the presence of an overload control mechanism does not
   remove the need for these other protection strategies.

9.4.  End-to End-Security Issues

   The lack of end-to-end security features makes it far more difficult
   to establish trust in overload reports that originate from non-
   adjacent nodes.  Any agents in the message path may insert or modify
   overload reports.  Nodes must trust that their adjacent peers perform
   proper checks on overload reports from their peers, and so on,
   creating a transitive-trust requirement extending for potentially
   long chains of nodes.  Network operators must determine if this
   transitive trust requirement is acceptable for their deployments.
   Nodes supporting Diameter overload control MUST give operators the
   ability to select which peers are trusted to deliver overload




Korhonen, et al.         Expires April 23, 2015                [Page 29]

Internet-Draft                    DOIC                      October 2014


   reports, and whether they are trusted to forward overload reports
   from non-adjacent nodes.

   The lack of end-to-end confidentiality protection means that any
   Diameter agent in the path of an overload report can view the
   contents of that report.  In addition to the requirement to select
   which peers are trusted to send overload reports, operators MUST be
   able to select which peers are authorized to receive reports.  A node
   MUST not send an overload report to a peer not authorized to receive
   it.  Furthermore, an agent MUST remove any overload reports that
   might have been inserted by other nodes before forwarding a Diameter
   message to a peer that is not authorized to receive overload reports.

   At the time of this writing, the DIME working group is studying
   requirements for adding end-to-end security
   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,
   when they become available, might make it easier to establish trust
   in non-adjacent nodes for overload control purposes.  Readers should
   be reminded, however, that the overload control mechanism encourages
   Diameter agents to modify AVPs in, or insert additional AVPs into,
   existing messages that are originated by other nodes.  If end-to-end
   security is enabled, there is a risk that such modification could
   violate integrity protection.  The details of using any future
   Diameter end-to-end security mechanism with overload control will
   require careful consideration, and are beyond the scope of this
   document.

10.  Contributors

   The following people contributed substantial ideas, feedback, and
   discussion to this document:

   o  Eric McMurry

   o  Hannes Tschofenig

   o  Ulrich Wiehe

   o  Jean-Jacques Trottin

   o  Maria Cruz Bartolome

   o  Martin Dolly

   o  Nirav Salot

   o  Susan Shishufeng




Korhonen, et al.         Expires April 23, 2015                [Page 30]

Internet-Draft                    DOIC                      October 2014


11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network
              Time Protocol Version 4: Protocol and Algorithms
              Specification", RFC 5905, June 2010.

   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
              "Diameter Base Protocol", RFC 6733, October 2012.

11.2.  Informative References

   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.

   [I-D.ietf-dime-e2e-sec-req]
              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,
              "Diameter AVP Level Security: Scenarios and Requirements",
              draft-ietf-dime-e2e-sec-req-00 (work in progress),
              September 2013.

   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.

   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.
              Loughney, "Diameter Credit-Control Application", RFC 4006,
              August 2005.

   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,
              "Clarifications on the Routing of Diameter Requests Based
              on the Username and the Realm", RFC 5729, December 2009.

   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control
              Requirements", RFC 7068, November 2013.

   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.

Appendix A.  Issues left for future specifications

   The base solution for the overload control does not cover all
   possible use cases.  A number of solution aspects were intentionally
   left for future specification and protocol work.



Korhonen, et al.         Expires April 23, 2015                [Page 31]

Internet-Draft                    DOIC                      October 2014


A.1.  Additional traffic abatement algorithms

   This specification describes only means for a simple loss based
   algorithm.  Future algorithms can be added using the designed
   solution extension mechanism.  The new algorithms need to be
   registered with IANA.  See Sections 6.1 and 8 for the required IANA
   steps.

A.2.  Agent Overload

   This specification focuses on Diameter endpoint (server or client)
   overload.  A separate extension will be required to outline the
   handling the case of agent overload.

A.3.  DIAMETER_TOO_BUSY clarifications

   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is
   somewhat under specified.  For example, there is no information how
   long the specific Diameter node is willing to be unavailable.  A
   specification updating [RFC6733] should clarify the handling of
   DIAMETER_TOO_BUSY from the error answer initiating Diameter node
   point of view and from the original request initiating Diameter node
   point of view.  Further, the inclusion of possible additional
   information providing AVPs should be discussed and possible be
   recommended to be used.

Appendix B.  Deployment Considerations

   Non supporting agents

      Due to the way that realm-routed requests are handled in Diameter
      networks, with the server selection for the request done by an
      agent, it is recommended that deployments upgrade all agents with
      direct connections to servers prior to enabling the DOIC solution
      in the Diameter network.

   Topology hiding interactions

      There exist proxies that implement what is refered to as Topology
      Hiding.  This can include cases where the agent modifies the
      Origin-Host in answer messages.  The behavior of the DOIC solution
      is not well understood when this happens.  As such, the DOIC
      solution does not address this scenario.








Korhonen, et al.         Expires April 23, 2015                [Page 32]

Internet-Draft                    DOIC                      October 2014


Appendix C.  Considerations for Applications Integrating the DOIC
             Solution

   THis section outlines considerations to be taken into account when
   integrating the DOIC solution into Diameter applications.

C.1.  Application Classification

   The following is a classification of Diameter applications and
   requests.  This discussion is meant to document factors that play
   into decisions made by the Diameter identity responsible for handling
   overload reports.

   Section 8.1 of [RFC6733] defines two state machines that imply two
   types of applications, session-less and session-based applications.
   The primary difference between these types of applications is the
   lifetime of Session-Ids.

   For session-based applications, the Session-Id is used to tie
   multiple requests into a single session.

   In session-less applications, the lifetime of the Session-Id is a
   single Diameter transaction, i.e. the session is implicitly
   terminated after a single Diameter transaction and a new Session-Id
   is generated for each Diameter request.

   For the purposes of this discussion, session-less applications are
   further divided into two types of applications:

   Stateless applications:

      Requests within a stateless application have no relationship to
      each other.  The 3GPP defined S13 application is an example of a
      stateless application [S13], --> where only a Diameter command is
      defined between a client and a server and no state is maintained
      between two consecutive transactions.

   Pseudo-session applications:

      Applications that do not rely on the Session-Id AVP for
      correlation of application messages related to the same session
      but use other session-related information in the Diameter requests
      for this purpose.  The 3GPP defined Cx application [Cx] is an
      example of a pseudo-session application.

   The Credit-Control application defined in [RFC4006] is an example of
   a Diameter session-based application.




Korhonen, et al.         Expires April 23, 2015                [Page 33]

Internet-Draft                    DOIC                      October 2014


   The handling of overload reports must take the type of application
   into consideration, as discussed in Appendix C.2.

C.2.  Application Type Overload Implications

   This section discusses considerations for mitigating overload
   reported by a Diameter entity.  This discussion focuses on the type
   of application.  Appendix C.3 discusses considerations for handling
   various request types when the target server is known to be in an
   overloaded state.

   These discussions assume that the strategy for mitigating the
   reported overload is to reduce the overall workload sent to the
   overloaded entity.  The concept of applying overload treatment to
   requests targeted for an overloaded Diameter entity is inherent to
   this discussion.  The method used to reduce offered load is not
   specified here but could include routing requests to another Diameter
   entity known to be able to handle them, or it could mean rejecting
   certain requests.  For a Diameter agent, rejecting requests will
   usually mean generating appropriate Diameter error responses.  For a
   Diameter client, rejecting requests will depend upon the application.
   For example, it could mean giving an indication to the entity
   requesting the Diameter service that the network is busy and to try
   again later.

   Stateless applications:

      By definition there is no relationship between individual requests
      in a stateless application.  As a result, when a request is sent
      or relayed to an overloaded Diameter entity - either a Diameter
      Server or a Diameter Agent - the sending or relaying entity can
      choose to apply the overload treatment to any request targeted for
      the overloaded entity.

   Pseudo-session applications:

      For pseudo-session applications, there is an implied ordering of
      requests.  As a result, decisions about which requests towards an
      overloaded entity to reject could take the command code of the
      request into consideration.  This generally means that
      transactions later in the sequence of transactions should be given
      more favorable treatment than messages earlier in the sequence.
      This is because more work has already been done by the Diameter
      network for those transactions that occur later in the sequence.
      Rejecting them could result in increasing the load on the network
      as the transactions earlier in the sequence might also need to be
      repeated.




Korhonen, et al.         Expires April 23, 2015                [Page 34]

Internet-Draft                    DOIC                      October 2014


   Session-based applications:

      Overload handling for session-based applications must take into
      consideration the work load associated with setting up and
      maintaining a session.  As such, the entity sending requests
      towards an overloaded Diameter entity for a session-based
      application might tend to reject new session requests prior to
      rejecting intra-session requests.  In addition, session ending
      requests might be given a lower probability of being rejected as
      rejecting session ending requests could result in session status
      being out of sync between the Diameter clients and servers.
      Application designers that would decide to reject mid-session
      requests will need to consider whether the rejection invalidates
      the session and any resulting session clean-up procedures.

C.3.  Request Transaction Classification

   Independent Request:

      An independent request is not correlated to any other requests
      and, as such, the lifetime of the session-id is constrained to an
      individual transaction.

   Session-Initiating Request:

      A session-initiating request is the initial message that
      establishes a Diameter session.  The ACR message defined in
      [RFC6733] is an example of a session-initiating request.

   Correlated Session-Initiating Request:

      There are cases when multiple session-initiated requests must be
      correlated and managed by the same Diameter server.  It is notably
      the case in the 3GPP PCC architecture [PCC], where multiple
      apparently independent Diameter application sessions are actually
      correlated and must be handled by the same Diameter server.

   Intra-Session Request:

      An intra session request is a request that uses the same Session-
      Id than the one used in a previous request.  An intra session
      request generally needs to be delivered to the server that handled
      the session creating request for the session.  The STR message
      defined in [RFC6733] is an example of an intra-session requests.

   Pseudo-Session Requests:





Korhonen, et al.         Expires April 23, 2015                [Page 35]

Internet-Draft                    DOIC                      October 2014


      Pseudo-session requests are independent requests and do not use
      the same Session-Id but are correlated by other session-related
      information contained in the request.  There exists Diameter
      applications that define an expected ordering of transactions.
      This sequencing of independent transactions results in a pseudo
      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx
      [Cx] application are examples of pseudo-session requests.

C.4.  Request Type Overload Implications

   The request classes identified in Appendix C.3 have implications on
   decisions about which requests should be throttled first.  The
   following list of request treatment regarding throttling is provided
   as guidelines for application designers when implementing the
   Diameter overload control mechanism described in this document.  The
   exact behavior regarding throttling is a matter of local policy,
   unless specifically defined for the application.

   Independent requests:

      Independent requests can be given equal treatment when making
      throttling decisions.

   Session-initiating requests:

      Session-initiating requests represent more work than independent
      or intra-session requests.  Moreover, session-initiating requests
      are typically followed by other session-related requests.  As
      such, as the main objective of the overload control is to reduce
      the total number of requests sent to the overloaded entity,
      throttling decisions might favor allowing intra-session requests
      over session-initiating requests.  Individual session-initiating
      requests can be given equal treatment when making throttling
      decisions.

   Correlated session-initiating requests:

      A Request that results in a new binding, where the binding is used
      for routing of subsequent session-initiating requests to the same
      server, represents more work load than other requests.  As such,
      these requests might be throttled more frequently than other
      request types.

   Pseudo-session requests:

      Throttling decisions for pseudo-session requests can take into
      consideration where individual requests fit into the overall
      sequence of requests within the pseudo session.  Requests that are



Korhonen, et al.         Expires April 23, 2015                [Page 36]

Internet-Draft                    DOIC                      October 2014


      earlier in the sequence might be throttled more aggressively than
      requests that occur later in the sequence.

   Intra-session requests

      There are two classes of intra-sessions requests.  The first class
      consists of requests that terminate a session.  The second one
      contains the set of requests that are used by the Diameter client
      and server to maintain the ongoing session state.  Session
      terminating requests should be throttled less aggressively in
      order to gracefully terminate sessions, allow clean-up of the
      related resources (e.g. session state) and get rid of the need for
      other intra-session requests, reducing the session management
      impact on the overloaded entity.  The default handling of other
      intra-session requests might be to treat them equally when making
      throttling decisions.  There might also be application level
      considerations whether some request types are favored over others.

Authors' Addresses

   Jouni Korhonen (editor)
   Broadcom
   Porkkalankatu 24
   Helsinki  FIN-00180
   Finland

   Email: jouni.nospam@gmail.com


   Steve Donovan (editor)
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: srdonovan@usdonovans.com


   Ben Campbell
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: ben@nostrum.com






Korhonen, et al.         Expires April 23, 2015                [Page 37]

Internet-Draft                    DOIC                      October 2014


   Lionel Morand
   Orange Labs
   38/40 rue du General Leclerc
   Issy-Les-Moulineaux Cedex 9  92794
   France

   Phone: +33145296257
   Email: lionel.morand@orange.com











































Korhonen, et al.         Expires April 23, 2015                [Page 38]

--------------040602090603050609000905--


From nobody Tue Oct 21 00:42:33 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DCA1B1A6FA9 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:42:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YDnOsrWjli3L for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:42:25 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B4DCA1AD0A0 for <dime@ietf.org>; Tue, 21 Oct 2014 00:42:23 -0700 (PDT)
Received: from localhost ([::1]:52493 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgU5A-00076x-OG; Tue, 21 Oct 2014 00:42:16 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Tue, 21 Oct 2014 07:42:16 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/43#comment:2
Message-ID: <072.eeecb0390c7a9273f5816d7aaa8c1dcf@trac.tools.ietf.org>
References: <057.97c5ce599fb219f1e97cb7300a394f91@trac.tools.ietf.org>
X-Trac-Ticket-ID: 43
In-Reply-To: <057.97c5ce599fb219f1e97cb7300a394f91@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/hzNWuOGV4CxkpDI9aEmDpS8H7Fo
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #43 (draft-ietf-dime-ovli): Overstated guidance on session-ending requests.
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 07:42:32 -0000

#43: Overstated guidance on session-ending requests.

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Changes as suggested by Ben:

 Independent Request Section:

 Old:

     Independent requests can be given equal treatment when making
 throttling decisions.


 New:

     Independent requests can generally be given equal treatment when
 making throttling decisions, unless otherwise indicated by application
 requirements or local policy.

 Session-Initiating Requests:

 Old:

     Session-initiating requests represent more work than independent or
 intra-session requests.  Moreover, session-initiating requests are
 typically followed by other session-related requests.  As such, as the
 main objective of the overload control is to reduce the total number of
 requests sent to the overloaded entity, throttling decisions might favor
 allowing intra-session requests over session-initiating requests.
 Individual session-initiating requests can be given equal treatment when
 making throttling decisions.

 New:

     Session-initiating requests often represent more work than independent
 or intra-session requests.  Moreover, session-initiating requests are
 typically followed by other session-related requests.  Since the main
 objective of the overload control is to reduce the total number of
 requests sent to the overloaded entity, throttling decisions might favor
 allowing intra-session requests over session-initiating requests.  In the
 absence of local policies or application specific requirements to the
 contrary, Individual session-initiating requests can be given equal
 treatment when making throttling decisions.


 Correlated Session-Initiationg Requests and Pseudo-session requests
 sections:

     [Existing text is fine as is]


 Intra-Session Requests:

 Old:

     There are two classes of intra-sessions requests.  The first class
 consists of requests that terminate a session.  The second one contains
 the set of requests that are used by the Diameter client and server to
 maintain the ongoing session state.  Session terminating requests should
 be throttled less aggressively in order to gracefully terminate sessions,
 allow clean-up of the related resources (e.g. session state) and get rid
 of the need for other intra-session requests, reducing the session
 management impact on the overloaded entity.  The default handling of other
 intra-session requests might be to treat them equally when making
 throttling decisions.  There might also be application level
 considerations whether some request types are favored over others.


 New:

     There are two classes of intra-sessions requests.  The first class
 consists of requests that terminate a session.  The second class comprises
 requests that are used by the Diameter client and server to maintain the
 ongoing session state.  Implementors and operators may choose to throttle
 session-terminating requests less aggressively in order to gracefully
 terminate sessions, allow clean-up of the related resources (e.g. session
 state) and avoid the need for additional intra-session requests. Favoring
 session-termination requests may reduce the session management impact on
 the overloaded entity.  The default handling of other intra-session
 requests might be to treat them equally when making throttling decisions.
 There might also be application level considerations whether some request
 types are favored over others.

-- 
-------------------------+-------------------------------------------------
 Reporter:               |       Owner:  draft-ietf-dime-
  ben@nostrum.com        |  ovli@tools.ietf.org
     Type:  defect       |      Status:  closed
 Priority:  minor        |   Milestone:
Component:  draft-ietf-  |     Version:  1.0
  dime-ovli              |  Resolution:  fixed
 Severity:  Active WG    |
  Document               |
 Keywords:               |
-------------------------+-------------------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/43#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 01:02:10 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A1CB11A6FA9 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:43:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mINWyQMSgdmt for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 00:43:17 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 94E8B1AD0A1 for <dime@ietf.org>; Tue, 21 Oct 2014 00:43:17 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:55092 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgU68-0004pA-5X for dime@ietf.org; Tue, 21 Oct 2014 00:43:17 -0700
Message-ID: <54460E93.408@usdonovans.com>
Date: Tue, 21 Oct 2014 09:43:15 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------000609020604070705050506"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/7boGmkCuLBtEijCNbUnP82kijoI
X-Mailman-Approved-At: Tue, 21 Oct 2014 01:02:09 -0700
Subject: [Dime] Resolution of issue 43
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 07:43:20 -0000

This is a multi-part message in MIME format.
--------------000609020604070705050506
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have updated github with Ben's suggested changes to issue 43.

I have attached the resulting diff file.

Regards,

Steve

--------------000609020604070705050506
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.</td><td> </td><td class="right">Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Internet-Draft                                                  Broadcom</td><td> </td><td class="right">Internet-Draft                                                  Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Intended status: Standards Track                         S. Donovan, Ed.</td><td> </td><td class="right">Intended status: Standards Track                         S. Donovan, Ed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">Expires: April 2<span class="delete">3</span>, 2015                                      B. Campbell</td><td> </td><td class="rblock">Expires: April 2<span class="insert">4</span>, 2015                                      B. Campbell</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                                  Oracle</td><td> </td><td class="right">                                                                  Oracle</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                               L. Morand</td><td> </td><td class="right">                                                               L. Morand</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                                                             Orange Labs</td><td> </td><td class="right">                                                             Orange Labs</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                        October 2<span class="delete">0</span>, 2014</td><td> </td><td class="rblock">                                                        October 2<span class="insert">1</span>, 2014</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Diameter Overload Indication Conveyance</td><td> </td><td class="right">                Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                      draft-ietf-dime-ovli-04.txt</td><td> </td><td class="right">                      draft-ietf-dime-ovli-04.txt</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Abstract</td><td> </td><td class="right">Abstract</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification documents a Diameter Overload Control (DOC) base</td><td> </td><td class="right">   This specification documents a Diameter Overload Control (DOC) base</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution and the dissemination of the overload report information.</td><td> </td><td class="right">   solution and the dissemination of the overload report information.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Requirements</td><td> </td><td class="right">Requirements</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 1, line 41</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 1, line 41</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are working documents of the Internet Engineering</td><td> </td><td class="right">   Internet-Drafts are working documents of the Internet Engineering</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Task Force (IETF).  Note that other groups may also distribute</td><td> </td><td class="right">   Task Force (IETF).  Note that other groups may also distribute</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   working documents as Internet-Drafts.  The list of current Internet-</td><td> </td><td class="right">   working documents as Internet-Drafts.  The list of current Internet-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td> </td><td class="right">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are draft documents valid for a maximum of six months</td><td> </td><td class="right">   Internet-Drafts are draft documents valid for a maximum of six months</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and may be updated, replaced, or obsoleted by other documents at any</td><td> </td><td class="right">   and may be updated, replaced, or obsoleted by other documents at any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   time.  It is inappropriate to use Internet-Drafts as reference</td><td> </td><td class="right">   time.  It is inappropriate to use Internet-Drafts as reference</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   material or to cite them other than as "work in progress."</td><td> </td><td class="right">   material or to cite them other than as "work in progress."</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   This Internet-Draft will expire on April 2<span class="delete">3</span>, 2015.</td><td> </td><td class="rblock">   This Internet-Draft will expire on April 2<span class="insert">4</span>, 2015.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Copyright Notice</td><td> </td><td class="right">Copyright Notice</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Copyright (c) 2014 IETF Trust and the persons identified as the</td><td> </td><td class="right">   Copyright (c) 2014 IETF Trust and the persons identified as the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   document authors.  All rights reserved.</td><td> </td><td class="right">   document authors.  All rights reserved.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td> </td><td class="right">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Provisions Relating to IETF Documents</td><td> </td><td class="right">   Provisions Relating to IETF Documents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td> </td><td class="right">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   publication of this document.  Please review these documents</td><td> </td><td class="right">   publication of this document.  Please review these documents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 36, line 25</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 36, line 25</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The request classes identified in Appendix C.3 have implications on</td><td> </td><td class="right">   The request classes identified in Appendix C.3 have implications on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   decisions about which requests should be throttled first.  The</td><td> </td><td class="right">   decisions about which requests should be throttled first.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   following list of request treatment regarding throttling is provided</td><td> </td><td class="right">   following list of request treatment regarding throttling is provided</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   as guidelines for application designers when implementing the</td><td> </td><td class="right">   as guidelines for application designers when implementing the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter overload control mechanism described in this document.  The</td><td> </td><td class="right">   Diameter overload control mechanism described in this document.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   exact behavior regarding throttling is a matter of local policy,</td><td> </td><td class="right">   exact behavior regarding throttling is a matter of local policy,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   unless specifically defined for the application.</td><td> </td><td class="right">   unless specifically defined for the application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Independent requests:</td><td> </td><td class="right">   Independent requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      Independent requests can be given equal treatment when making</td><td> </td><td class="rblock">      Independent requests can <span class="insert">generally</span> be given equal treatment when</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      throttling <span class="delete">decisions.</span></td><td> </td><td class="rblock">      making throttling <span class="insert">decisions, unless otherwise indicated by</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      application requirements or local policy.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Session-initiating requests:</td><td> </td><td class="right">   Session-initiating requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      Session-initiating requests represent more work than independent</td><td> </td><td class="rblock">      Session-initiating requests <span class="insert">often</span> represent more work than</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      or intra-session requests.  Moreover, <span class="delete">session-initiating</span> requests</td><td> </td><td class="rblock">      independent or intra-session requests.  Moreover, <span class="insert">session-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      are typically followed by other <span class="delete">session-related</span> requests.  <span class="delete">As</span></td><td> </td><td class="rblock"><span class="insert">      initiating</span> requests are typically followed by other <span class="insert">session-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      such, as</span> the main objective of the overload control is to reduce</td><td> </td><td class="rblock"><span class="insert">      related</span> requests.  <span class="insert">Since</span> the main objective of the overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      the total number of requests sent to the overloaded entity,</td><td> </td><td class="rblock">      control is to reduce the total number of requests sent to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      throttling decisions might favor allowing intra-session requests</td><td> </td><td class="rblock">      overloaded entity, throttling decisions might favor allowing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      over session-initiating requests.  Individual session-initiating</td><td> </td><td class="rblock">      intra-session requests over session-initiating requests.  <span class="insert">In the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      requests can be given equal treatment when making throttling</td><td> </td><td class="rblock"><span class="insert">      absence of local policies or application specific requirements to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      decisions.</td><td> </td><td class="rblock"><span class="insert">      the contrary,</span> Individual session-initiating requests can be given</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      equal treatment when making throttling decisions.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Correlated session-initiating requests:</td><td> </td><td class="right">   Correlated session-initiating requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      A Request that results in a new binding, where the binding is used</td><td> </td><td class="right">      A Request that results in a new binding, where the binding is used</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      for routing of subsequent session-initiating requests to the same</td><td> </td><td class="right">      for routing of subsequent session-initiating requests to the same</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      server, represents more work load than other requests.  As such,</td><td> </td><td class="right">      server, represents more work load than other requests.  As such,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      these requests might be throttled more frequently than other</td><td> </td><td class="right">      these requests might be throttled more frequently than other</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      request types.</td><td> </td><td class="right">      request types.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Pseudo-session requests:</td><td> </td><td class="right">   Pseudo-session requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Throttling decisions for pseudo-session requests can take into</td><td> </td><td class="right">      Throttling decisions for pseudo-session requests can take into</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      consideration where individual requests fit into the overall</td><td> </td><td class="right">      consideration where individual requests fit into the overall</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      sequence of requests within the pseudo session.  Requests that are</td><td> </td><td class="right">      sequence of requests within the pseudo session.  Requests that are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      earlier in the sequence might be throttled more aggressively than</td><td> </td><td class="right">      earlier in the sequence might be throttled more aggressively than</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests that occur later in the sequence.</td><td> </td><td class="right">      requests that occur later in the sequence.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Intra-session requests</td><td> </td><td class="rblock">   Intra-session requests<span class="insert">:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      There are two classes of intra-sessions requests.  The first class</td><td> </td><td class="right">      There are two classes of intra-sessions requests.  The first class</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      consists of requests that terminate a session.  The second <span class="delete">one</span></td><td> </td><td class="rblock">      consists of requests that terminate a session.  The second <span class="insert">class</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      contains the set of</span> requests that are used by the Diameter client</td><td> </td><td class="rblock"><span class="insert">      comprises</span> requests that are used by the Diameter client and server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      and server to maintain the ongoing session state.  <span class="delete">Session</span></td><td> </td><td class="rblock">      to maintain the ongoing session state.  <span class="insert">Implementors and operators</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      terminating</span> requests <span class="delete">should be throttled</span> less aggressively in</td><td> </td><td class="rblock"><span class="insert">      may choose to throttle session-terminating</span> requests less</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      order to gracefully terminate sessions, allow clean-up of the</td><td> </td><td class="rblock">      aggressively in order to gracefully terminate sessions, allow</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      related resources (e.g. session state) and <span class="delete">get rid of</span> the need for</td><td> </td><td class="rblock">      clean-up of the related resources (e.g. session state) and <span class="insert">avoid</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">other</span> intra-session <span class="delete">requests, reducing</span> the session management</td><td> </td><td class="rblock">      the need for <span class="insert">additional</span> intra-session <span class="insert">requests.  Favoring session-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      impact on the overloaded entity.  The default handling of other</td><td> </td><td class="rblock"><span class="insert">      termination requests may reduce</span> the session management impact on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">intra-session</span> requests might be to treat them equally when making</td><td> </td><td class="rblock">      the overloaded entity.  The default handling of other <span class="insert">intra-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      session</span> requests might be to treat them equally when making</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      throttling decisions.  There might also be application level</td><td> </td><td class="right">      throttling decisions.  There might also be application level</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      considerations whether some request types are favored over others.</td><td> </td><td class="right">      considerations whether some request types are favored over others.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Authors' Addresses</td><td> </td><td class="right">Authors' Addresses</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Jouni Korhonen (editor)</td><td> </td><td class="right">   Jouni Korhonen (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Broadcom</td><td> </td><td class="right">   Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Porkkalankatu 24</td><td> </td><td class="right">   Porkkalankatu 24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Helsinki  FIN-00180</td><td> </td><td class="right">   Helsinki  FIN-00180</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Finland</td><td> </td><td class="right">   Finland</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 7 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>24 lines changed or deleted</i></th><th><i> </i></th><th><i>27 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . . .  31\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss ab
 atement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\n
 Internet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the O
 C-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type reque
 sts and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received with
 in OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.
 \n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a react
 ing node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow wi
 ndow), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement,
  whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n 
   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   alre
 ady active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in
 \n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting
  node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload cont
 rol solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When de
 fining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section
  documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes 
 use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n 
       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting
  node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffi
 c reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 24, 2015              
   [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the
  guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of th
 e OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the react
 ing\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type A
 VP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MU
 ST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into
  account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially
  defined:\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header 
 of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to 
 a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n
    node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n   
    +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described 
 in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  
 New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n
    Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, 
 or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report int
 o the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n
    overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cea
 se sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes
  need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peer
 s, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an o
 verload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism
  with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burba
 nk, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications 
 on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See 
 Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed re
 quests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating 
 the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications ar
 e\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draf
 t                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle
  them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which reques
 ts towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending request
 s\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diam
 eter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015             
    [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior r
 egarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatm
 ent when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-s
 essions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n  
  Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nInten
 ded status: Standards Track                         S. Donovan, Ed.\nExpires: April 23, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 20, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is subm
 itted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 23, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 23, 2015                
  [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . .
  . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.
   Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . .
  . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . .
  .  31\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  Th
 e requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of tr
 affic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded nod
 e.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including c
 lients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n
    Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node suppo
 rts more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send thro
 ttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to t
 he presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may e
 xist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-
 Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-ser
 ver" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a D
 iameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      Octobe
 r 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  St
 ateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce int
 eroperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-
 routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines
  the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater re
 duction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and n
 ew definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.
 \n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+      
            :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n  
  This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to r
 eflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Report
 ing Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be fr
 om the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for tra
 nsactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 13]\n_\nInternet-Draft            
         DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorith
 m an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 14]\n_\nInternet-Draft
                     DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Rea
 cting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported ab
 atement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition 
 on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specific
 ations MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting nod
 e MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported
  in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node 
 when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting no
 de may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous o
 verload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting
  node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is 
 used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the O
 C-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview
 \n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logi
 c at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload
  condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The 
 method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn
  the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      redu
 ction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code
  TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 22]\n_\nInternet-Draf
 t                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevan
 t for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context 
 of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Valid
 ity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOU
 LD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n
       for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of 
 the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Un
 signed32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the O
 C-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.
 x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with 
 the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial 
 assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorize
 d parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Node
 s can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumptio
 n that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or 
 forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is like
 ly to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server mig
 ht reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Di
 ameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to rece
 ive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  
 Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base 
 Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n
    [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of age
 nt overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solutio
 n\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made 
 by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless
  application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   Th
 is section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the applicat
 ion.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable tre
 atment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower
  probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated an
 d managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      in
 formation contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can be given equal treatment when making\n      throttling decisions.\n\n   Session-i
 nitiating requests:\n\n      Session-initiating requests represent more work than independent\n      or intra-session requests.  Moreover, session-initiating requests\n      are typically followed by other session-related requests.  As\n      such, as the main objective of the overload control is to reduce\n      the total number of requests sent to the overloaded entity,\n      throttling decisions might favor allowing intra-session requests\n      over session-initiating requests.  Individual session-initiating\n      requests can be given equal treatment when making throttling\n      decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n 
      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second one\n      contains the set of requests that are used by the Diameter client\n      and server to maintain the ongoing session state.  Session\n      terminating requests should be throttled less aggressively in\n      order to gracefully terminate sessions, allow clean-up of the\n      related resources (e.g. session state) and g
 et rid of the need for\n      other intra-session requests, reducing the session management\n      impact on the overloaded entity.  The default handling of other\n      intra-session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\
 n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 23, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------000609020604070705050506--


From nobody Tue Oct 21 01:36:28 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4F0261A1A0A for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 01:36:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yWuCoXO80KTz for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 01:36:23 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A42C21A006F for <dime@ietf.org>; Tue, 21 Oct 2014 01:27:18 -0700 (PDT)
Received: from localhost ([::1]:55224 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgUme-00046U-DF; Tue, 21 Oct 2014 01:27:12 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Tue, 21 Oct 2014 08:27:12 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:2
Message-ID: <081.b0cf784f6031add8c6ce78fe7312e32c@trac.tools.ietf.org>
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-Trac-Ticket-ID: 85
In-Reply-To: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/2q8UP-XD4DpvZAAka6-9qJVtT4g
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 08:36:25 -0000

#85: New error response


Comment (by srdonovan@usdonovans.com):

 Added the following proposed wording to the draft:

    When a DOIC node rejects a Diameter request due to throttling, the
    DOIC node needs to select the appropriate error response code.  This
    determination is made based on the probability of the request
    succeeding if retried on a different path.

    The DIAMETER_TOO_BUSY response code SHOULD be used when the request
    is likely to succeed on a different path.

       For instance, if the request arrived at the reporting node without
       a Destination-Host AVP then the reporting node might determine
       that there is an alternative Diameter node that could successfully
       process the request and that retrying the transaction would not
       negatively impact the reporting node.

    The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
    indicate that the request should not be retried.  This is used when
    the request is not likely to succeed on a different path and retrying
    would consume valuable resources during an occurance of overload.

       For instance, if the request arrived at the reporting node with a
       Destination-Host AVP populated with its own Diameter identity then
       the reporting node can assume that retrying the request would
       result in it coming to the same reporting node.

       A second example is when an agent that supports the DOIC solution
       is preforming the role of a reacting node for a non supporting
       client.  Requests that are rejected as a result of DOIC throttling
       in this scenario would generally be rejected with a
       DIAMETER_UNABLE_TO_COMPLY response code.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  new
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 01:53:03 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1F2111A0191 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 01:37:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zewNbmcLqf0e for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 01:37:35 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 525E71A01A8 for <dime@ietf.org>; Tue, 21 Oct 2014 01:28:03 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:55195 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgUnR-000CM5-91; Tue, 21 Oct 2014 01:28:02 -0700
Message-ID: <5446190F.2070804@usdonovans.com>
Date: Tue, 21 Oct 2014 10:27:59 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: lionel.morand@orange.com, Ben Campbell <ben@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup>, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com>
In-Reply-To: <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com>
Content-Type: multipart/mixed; boundary="------------080905060407090301080505"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/c33Ef4rLshoFSVTK91tdEqkuB1A
X-Mailman-Approved-At: Tue, 21 Oct 2014 01:53:01 -0700
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 08:37:40 -0000

This is a multi-part message in MIME format.
--------------080905060407090301080505
Content-Type: multipart/alternative;
 boundary="------------060807060305010704020507"


--------------060807060305010704020507
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

I have incorporated the following text into the document in the 
existing, previously empty, section 7. Error Response Codes.

I will wait until tomorrow to close issue 85 to allow for discussion of 
the proposed wording.

I have attached the diff as this wording is not in the draft.

Regards,

Steve

---

    When a DOIC node rejects a Diameter request due to throttling, the
    DOIC node needs to select the appropriate error response code.  This
    determination is made based on the probability of the request
    succeeding if retried on a different path.

    The DIAMETER_TOO_BUSY response code SHOULD be used when the request
    is likely to succeed on a different path.

       For instance, if the request arrived at the reporting node without
       a Destination-Host AVP then the reporting node might determine
       that there is an alternative Diameter node that could successfully
       process the request and that retrying the transaction would not
       negatively impact the reporting node.

    The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
    indicate that the request should not be retried.  This is used when
    the request is not likely to succeed on a different path and retrying
    would consume valuable resources during an occurance of overload.

       For instance, if the request arrived at the reporting node with a
       Destination-Host AVP populated with its own Diameter identity then
       the reporting node can assume that retrying the request would
       result in it coming to the same reporting node.

       A second example is when an agent that supports the DOIC solution
       is preforming the role of a reacting node for a non supporting
       client.  Requests that are rejected as a result of DOIC throttling
       in this scenario would generally be rejected with a
       DIAMETER_UNABLE_TO_COMPLY response code.



On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
> I agree.
>
> Lionel
>
> Envoyé depuis mon Sony Xperia SP d'Orange
>
> ---- Ben Campbell a écrit ----
>
>
>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> <lionel.morand@orange.com> wrote:
>>
>> Hi,
>>
>> I think that:
>> - TOO_BUSY should be restricted to server answer
> One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.
>
>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission is required
>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.
>>
>> As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.
>>
>> Regards,
>>
>> Lionel
>>
>> -----Message d'origine-----
>> De : DiME [mailto:dime-bounces@ietf.org] De la part de Ben Campbell
>> Envoyé : lundi 20 octobre 2014 19:10
>> À : Steve Donovan
>> Cc : dime@ietf.org
>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>
>> I agree that we should generalize these, but I think the direction is not quite right. More inline:
>>
>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>>
>>> We came to the following agreements on error responses:
>>>
>>> - Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>
>>> - Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>
>>> I propose that we generalize this to the following:
>>>
>>> - Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>
>>> - Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
>> I don't think we should state this in terms of reaction and reporting nodes. I think we should generalize to expected behavior. Also, in the case where the downstream node does not support DOIC, I'm not sure it makes sense to say the throttling node is really a reporting node (for that particular relationship.)
>>
>> My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)
>>
>> Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.
>>
>>
>>> This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>
>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.
>>>
>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>
>>> Regards,
>>>
>>> Steve
>>>
>>> _______________________________________________
>>> DiME mailing list
>>> DiME@ietf.org
>>> https://www.ietf.org/mailman/listinfo/dime
>> _______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>>
>> _________________________________________________________________________________________________________________________
>>
>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>
>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>> they should not be distributed, used or copied without authorisation.
>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>> Thank you.
>>
>
> _________________________________________________________________________________________________________________________
>
> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
> Thank you.
>
>


--------------060807060305010704020507
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I have incorporated the following text into the document in the
    existing, previously empty, section 7. Error Response Codes.<br>
    <br>
    I will wait until tomorrow to close issue 85 to allow for discussion
    of the proposed wording.<br>
    <br>
    I have attached the diff as this wording is not in the draft.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
    ---<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   When a DOIC node rejects a Diameter request due to throttling, the
   DOIC node needs to select the appropriate error response code.  This
   determination is made based on the probability of the request
   succeeding if retried on a different path.

   The DIAMETER_TOO_BUSY response code SHOULD be used when the request
   is likely to succeed on a different path.

      For instance, if the request arrived at the reporting node without
      a Destination-Host AVP then the reporting node might determine
      that there is an alternative Diameter node that could successfully
      process the request and that retrying the transaction would not
      negatively impact the reporting node.

   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
   indicate that the request should not be retried.  This is used when
   the request is not likely to succeed on a different path and retrying
   would consume valuable resources during an occurance of overload.

      For instance, if the request arrived at the reporting node with a
      Destination-Host AVP populated with its own Diameter identity then
      the reporting node can assume that retrying the request would
      result in it coming to the same reporting node.

      A second example is when an agent that supports the DOIC solution
      is preforming the role of a reacting node for a non supporting
      client.  Requests that are rejected as a result of DOIC throttling
      in this scenario would generally be rejected with a
      DIAMETER_UNABLE_TO_COMPLY response code.


</pre>
    <br>
    <div class="moz-cite-prefix">On 10/21/14, 6:53 AM,
      <a class="moz-txt-link-abbreviated" href="mailto:lionel.morand@orange.com">lionel.morand@orange.com</a> wrote:<br>
    </div>
    <blockquote
cite="mid:1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com"
      type="cite">
      <pre wrap="">I agree.

Lionel

Envoy&eacute; depuis mon Sony Xperia SP d'Orange

---- Ben Campbell a &eacute;crit ----


</pre>
      <blockquote type="cite">
        <pre wrap="">On Oct 20, 2014, at 4:41 PM, <a class="moz-txt-link-rfc2396E" href="mailto:lionel.morand@orange.com">&lt;lionel.morand@orange.com&gt;</a> <a class="moz-txt-link-rfc2396E" href="mailto:lionel.morand@orange.com">&lt;lionel.morand@orange.com&gt;</a> wrote:

Hi,

I think that:
- TOO_BUSY should be restricted to server answer
</pre>
      </blockquote>
      <pre wrap="">
One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.

</pre>
      <blockquote type="cite">
        <pre wrap="">- UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission is required
- UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.

As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.

Regards,

Lionel

-----Message d'origine-----
De : DiME [<a class="moz-txt-link-freetext" href="mailto:dime-bounces@ietf.org">mailto:dime-bounces@ietf.org</a>] De la part de Ben Campbell
Envoy&eacute; : lundi 20 octobre 2014 19:10
&Agrave; : Steve Donovan
Cc : <a class="moz-txt-link-abbreviated" href="mailto:dime@ietf.org">dime@ietf.org</a>
Objet : Re: [Dime] Proposal for error response wording (issue 85)

I agree that we should generalize these, but I think the direction is not quite right. More inline:

</pre>
        <blockquote type="cite">
          <pre wrap="">On Oct 20, 2014, at 5:49 AM, Steve Donovan <a class="moz-txt-link-rfc2396E" href="mailto:srdonovan@usdonovans.com">&lt;srdonovan@usdonovans.com&gt;</a> wrote:

We came to the following agreements on error responses:

- Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.

- Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.

I propose that we generalize this to the following:

- Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.

- Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
</pre>
        </blockquote>
        <pre wrap="">
I don't think we should state this in terms of reaction and reporting nodes. I think we should generalize to expected behavior. Also, in the case where the downstream node does not support DOIC, I'm not sure it makes sense to say the throttling node is really a reporting node (for that particular relationship.)

My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)

Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.


</pre>
        <blockquote type="cite">
          <pre wrap="">
This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.

I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.

I will hold off making this change until tomorrow (Tuesday morning).

Regards,

Steve

_______________________________________________
DiME mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DiME@ietf.org">DiME@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/dime">https://www.ietf.org/mailman/listinfo/dime</a>
</pre>
        </blockquote>
        <pre wrap="">
_______________________________________________
DiME mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DiME@ietf.org">DiME@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/dime">https://www.ietf.org/mailman/listinfo/dime</a>

_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.

</pre>
      </blockquote>
      <pre wrap="">

_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.


</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------060807060305010704020507--

--------------080905060407090301080505
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 48</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 48</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  2<span class="delete">7</span></td><td> </td><td class="rblock">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  2<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="delete">29</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">30</span></td><td> </td><td class="rblock">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">     11.2.  Informative References . . . . . . . . . . . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="delete">31</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.3.  Request Transaction Classification  . . . . . . . . . . .  3<span class="delete">5</span></td><td> </td><td class="rblock">     C.3.  Request Transaction Classification  . . . . . . . . . . .  3<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  3<span class="delete">7</span></td><td> </td><td class="rblock">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  3<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 27, line 7</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 27, line 7</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   command within that application that includes the AVP.</td><td> </td><td class="right">   command within that application that includes the AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The Diameter overload control AVPs SHOULD always be sent with the</td><td> </td><td class="right">   The Diameter overload control AVPs SHOULD always be sent with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   M-bit cleared when used within existing Diameter applications to</td><td> </td><td class="right">   M-bit cleared when used within existing Diameter applications to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   avoid backward compatibility issues.  Otherwise, when reused in newly</td><td> </td><td class="right">   avoid backward compatibility issues.  Otherwise, when reused in newly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   defined Diameter applications, the DOC related AVPs SHOULD have the</td><td> </td><td class="right">   defined Diameter applications, the DOC related AVPs SHOULD have the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   M-bit set.</td><td> </td><td class="right">   M-bit set.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">7.  Error Response Codes</td><td> </td><td class="right">7.  Error Response Codes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Editor's note:</span> This <span class="delete">section depends</span> on <span class="delete">resolution</span> of <span class="delete">issue #27.</span></td><td> </td><td class="rblock">   <span class="insert">When a DOIC node rejects a Diameter request due to throttling, the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   DOIC node needs to select the appropriate error response code.</span>  This</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">determination is made based</span> on <span class="insert">the probability</span> of <span class="insert">the request</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   succeeding if retried on a different path.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The DIAMETER_TOO_BUSY response code SHOULD be used when the request</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   is likely to succeed on a different path.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      For instance, if the request arrived at the reporting node without</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      a Destination-Host AVP then the reporting node might determine</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      that there is an alternative Diameter node that could successfully</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      process the request and that retrying the transaction would not</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      negatively impact the reporting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   indicate that the request should not be retried.  This is used when</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the request is not likely to succeed on a different path and retrying</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   would consume valuable resources during an occurance of overload.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      For instance, if the request arrived at the reporting node with a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Destination-Host AVP populated with its own Diameter identity then</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the reporting node can assume that retrying the request would</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      result in it coming to the same reporting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      A second example is when an agent that supports the DOIC solution</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      is preforming the role of a reacting node for a non supporting</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      client.  Requests that are rejected as a result of DOIC throttling</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      in this scenario would generally be rejected with a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      DIAMETER_UNABLE_TO_COMPLY response code.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">8.  IANA Considerations</td><td> </td><td class="right">8.  IANA Considerations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">8.1.  AVP codes</td><td> </td><td class="right">8.1.  AVP codes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   New AVPs defined by this specification are listed in Section 6.  All</td><td> </td><td class="right">   New AVPs defined by this specification are listed in Section 6.  All</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   AVP codes allocated from the 'Authentication, Authorization, and</td><td> </td><td class="right">   AVP codes allocated from the 'Authentication, Authorization, and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Accounting (AAA) Parameters' AVP Codes registry.</td><td> </td><td class="right">   Accounting (AAA) Parameters' AVP Codes registry.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">8.2.  New registries</td><td> </td><td class="right">8.2.  New registries</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 7 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>10 lines changed or deleted</i></th><th><i> </i></th><th><i>38 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then
  to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to pe
 rform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   
 (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2)
  into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorit
 hm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR
  of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a rep
 orting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AV
 Ps into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server
 \n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   
 DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC ag
 ent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible ove
 rload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported feat
 ures.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports appl
 y to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n
    report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).
   Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is
  based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information
 \n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:
 --(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   an
 d the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message h
 andled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss ab
 atement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\n
 Internet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the O
 C-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type reque
 sts and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received with
 in OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.
 \n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a react
 ing node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow wi
 ndow), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement,
  whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n 
   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   alre
 ady active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in
 \n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting
  node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload cont
 rol solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When de
 fining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section
  documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes 
 use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n 
       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting
  node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffi
 c reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 24, 2015              
   [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the
  guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of th
 e OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the react
 ing\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type A
 VP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MU
 ST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into
  account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially
  defined:\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header 
 of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to 
 a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n
    node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n   
    +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described 
 in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the 
 request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that su
 pports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   registry
  using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence
  or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter clie
 nt or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers b
 ut not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an over
 load report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node se
 nds an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources tha
 t exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to 
 select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they b
 ecome available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n
    o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.2.  Informative 
 References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December
  2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifica
 tions\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology 
 hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n
    The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\
 n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various re
 quest types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication 
 to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This
  is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decid
 e to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notab
 ly\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session
 .  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application require
 ments or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  
 As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid
 \n      the need for additional intra-session requests.  Favoring session-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   E
 mail: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      d
 raft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropria
 te to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described
  in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . 
 . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-
 Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  27\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC  
                     October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  29\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  30\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  31\n   Appendix A.  Issues left for future specifications  . . . . . . .  31\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  32\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  32\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n 
     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  35\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  37\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the
  solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled reques
 ts\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node 
 indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October
  2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over exi
 sting\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement al
 gorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload
  of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a
  reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification hav
 e been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: Ther
 e is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange
 .\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers
  do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overloa
 d abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of
 \n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015 
                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of
  overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applyin
 g the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the 
 OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required 
 to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :
 \n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 
 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate sup
 port for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Suppo
 rted-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-S
 upported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate suppo
 rt for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control S
 tate for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expir
 y (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes creat
 e a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when re
 ceiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\
 n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC   
                    October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer mess
 age\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Sectio
 n 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC         
              October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   remov
 ing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Su
 pported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST 
 only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold ov
 er a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expi
 red.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   
 existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (i
 n the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement a
 lgorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be appli
 ed to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP
 .\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there w
 ill be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease t
 he amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload cont
 rol\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub
 -AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n
 6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n           
       [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Se
 quence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  In
 valid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration va
 lue set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      
 The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned 
 to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      Octo
 ber 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section           
    _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n 
      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   Editor\'s note: This section depends on resolution of issue #27.\n\n8.  IANA Consideration
 s\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\
 n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.1.  Potential Threat Modes\n\n   The Diameter pro
 tocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any par
 t of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, 
 a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   about current overload conditions to time a DoS attack fo
 r maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessa
 rily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload repo
 rts that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   conten
 ts of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages t
 hat are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119
 , March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koski
 nen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n
    This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of 
 possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft             
        DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter tr
 ansaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session 
 application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted
  for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatme
 nt to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Sess
 ion-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\
 n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the sess
 ion creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n  
  following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      i
 ntra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the 
 pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions
 .  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.       
   Expires April 24, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------080905060407090301080505--


From nobody Tue Oct 21 02:04:57 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6752D1A00FB for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 02:04:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OvshexMxnwNi for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 02:04:54 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DC0841A00E5 for <dime@ietf.org>; Tue, 21 Oct 2014 02:04:54 -0700 (PDT)
Received: from localhost ([::1]:56658 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgVN3-0002Vd-Mz; Tue, 21 Oct 2014 02:04:49 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Tue, 21 Oct 2014 09:04:49 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/75#comment:1
Message-ID: <081.571a5c51454a5bf4228f9ebb2b1c1b3b@trac.tools.ietf.org>
References: <066.165d20d0969f53f2e18f5a88f737e2d5@trac.tools.ietf.org>
X-Trac-Ticket-ID: 75
In-Reply-To: <066.165d20d0969f53f2e18f5a88f737e2d5@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/-r7zidzrZM9t350qz4gVvJhEXd4
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #75 (draft-ietf-dime-ovli): Proposed changes to Terminology section
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 09:04:56 -0000

#75: Proposed changes to Terminology section


Comment (by srdonovan@usdonovans.com):

 Updated document with the following:

    Abatement

       Reaction to receipt of an overload report resulting in a reduction
       in traffic sent to the reporting node.  Abatement actions include
       diversion and throttling.

    Abatement Algorithm

       An algorithm requested by reporting nodes and used by reacting
       nodes to reduce the amount of traffic sent during an occurrence of
       overload control.

    Diversion

       Abatement of traffic sent to a reporting node by a reacting node
       in response to receipt of an overload report.  The abatement is
       achieved by diverting traffic from the reporting node to another
       Diameter node that is able to process the request.

    Host-Routed Request

       The set of requests that a reacting node knows will be served by a
       particular host, either due to the presence of a Destination-Host
       AVP, or by some other local knowledge on the part of the reacting
       node.

    Overload Control State (OCS)

       State describing an occurrence of overload control maintained by
       reporting and reacting nodes.

    Overload Report (OLR)

       A set of AVPs sent by a reporting node indicating the start or
       continuation of an occurrence of overload control.

    Reacting Node

       A Diameter node that consumes and acts upon a report.

    Realm-Routed Request

       The set of requests that a reacting node does not know the host
       that will service the request.

    Reporting Node

       A Diameter node that generates an overload report.  (This may or
       may not be the overloaded node.)

    Throttling

       Throttling is the reduction of the number of requests sent to an
       entity.  Throttling can include a client dropping requests, or an
       agent rejecting requests with appropriate error responses.  In
       extreme cases servers can also throttle requests when requested
       reductions in traffic does not sufficiently address the overload
       scenario.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  new
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/75#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 04:17:33 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C82101A1A88 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:17:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YJmEF7AUXEhb for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:17:28 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BE4801A1A6F for <dime@ietf.org>; Tue, 21 Oct 2014 04:17:28 -0700 (PDT)
Received: from localhost ([::1]:35230 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgXRK-0007VF-PP; Tue, 21 Oct 2014 04:17:25 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Tue, 21 Oct 2014 11:17:21 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/58#comment:2
Message-ID: <077.cab7be98f78625b524b3f615da87e121@trac.tools.ietf.org>
References: <062.600cb97f5aa115891e91baed3f682f01@trac.tools.ietf.org>
X-Trac-Ticket-ID: 58
In-Reply-To: <062.600cb97f5aa115891e91baed3f682f01@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/s-nKJIVzAY1UJ7_MJbYazE6t9ME
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #58 (draft-ietf-dime-ovli): Multiple Reporting Nodes for realm-routed-request type reports
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 11:17:31 -0000

#58: Multiple Reporting Nodes for realm-routed-request type reports

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Added the following wording to section 4.2.3 (the reporting node sub
 section of the overload report handling section):

    This document assumes that there is a single source for realm-reports
    for a given realm, or that if multiple nodes can send realm reports,
    that each such node has full knowledge of the overload state of the
    entire realm.  A reacting node cannot distinguish between receiving
    realm-reports from a single node, or from multiple nodes.

    If multiple such nodes exist, they MUST ensure that realm-reports are
    kept in sync.  This includes synchronizing the sequence numbers as
    well as the reported overload state.  The method of doing so is up to
    the implementation.  One way to keep the sequence numbers in sync is
    to generate the sequence numbers based on system time.

-- 
----------------------------------+---------------------------
 Reporter:  ulrich.wiehe@nsn.com  |       Owner:  Ulrich Wiehe
     Type:  defect                |      Status:  closed
 Priority:  major                 |   Milestone:
Component:  draft-ietf-dime-ovli  |     Version:  1.0
 Severity:  Active WG Document    |  Resolution:  fixed
 Keywords:                        |
----------------------------------+---------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/58#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 04:42:42 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4F5F11A1AEE for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:42:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level: 
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mK7N0-bLlfkI for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:42:25 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias245.francetelecom.com [80.12.204.245]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 01BEA1A1ADF for <dime@ietf.org>; Tue, 21 Oct 2014 04:42:24 -0700 (PDT)
Received: from omfeda08.si.francetelecom.fr (unknown [xx.xx.xx.201]) by omfeda12.si.francetelecom.fr (ESMTP service) with ESMTP id 037773B4429; Tue, 21 Oct 2014 13:42:23 +0200 (CEST)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.183]) by omfeda08.si.francetelecom.fr (ESMTP service) with ESMTP id DD1A3384061; Tue, 21 Oct 2014 13:42:22 +0200 (CEST)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH02.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Tue, 21 Oct 2014 13:42:22 +0200
From: <lionel.morand@orange.com>
To: "dime@ietf.org" <dime@ietf.org>
Thread-Topic: Minutes of the Dime Interim Meeting
Thread-Index: Ac/tIRzDIVhmb/hzS+Cmn9BU8KaR3w==
Date: Tue, 21 Oct 2014 11:42:21 +0000
Message-ID: <14956_1413891742_5446469E_14956_753_1_6B7134B31289DC4FAF731D844122B36E804DD9@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.197.38.4]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.9.24.114819
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/PolIU3Y4guR_YQrWWqKITA9wuKU
Subject: [Dime] Minutes of the Dime Interim Meeting
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 11:42:31 -0000

Hi,

Please find below the minutes of the interim that was held in Sophia-Antipo=
lis, France, October 16-17, 2014.
These minutes capture:
- the discussions and conclusions on the remaining open issues on the draft=
 "Diameter Overload Indication Conveyance" (draft-ietf-dime-ovli-03.txt)
- the work plan for the completion of the draft towards a WGLC and IESG rev=
iew

Regards,

Lionel

*********************

Attendees:

Jouni Khoronen
Lionel Morand
Ben Campbell
Steve Donnovan
Martin Dolly
Ulrich Wiehe
Jean-Jacques trottin
maria cruz bartolome
benoit claise
Susan Shi


Agreed agenda:

THURSDAY, October 16, 2014
0930-1230  Morning Session I
Meeting Room: S905 ROYA

* Meeting Preliminaries
- Note Well
- Note takers
- Agenda bashing

* Status of the draft since IETF90
- Changes in v04
- Closed Issues
- Pending open issues
- New open Issues

THURSDAY, October 16, 2014
1400-1800  Afternoon Session I
Meeting Room: S905 ROYA

* Review of the proposed solutions and Discussion on new/pending open issue=
s (1/2)

FRIDAY, October 17, 2014
0930-1230  Morning Session II
Meeting Room: S905 ROYA

* Review of the proposed solutions and Discussion on new/pending open issue=
s (2/2)
* Conclusions

FRIDAY, October 17, 2014
1400-1700  Afternoon Session II
Meeting Room: S905 ROYA

* DOIC next steps and working procedure till WGLC/IETF91
* Wrap-up & Conclusion
* End of the meeting

* Status of the draft since IETF90

The meeting started by a review of the pending open issues presented by Ste=
ve and a prioritization of the points to address during the meeting.
It was agreed that any editorial issues can be fixed easily by offline disc=
ussions.
It was agreed that we need to clarifications any points related to the defi=
nition of the report types, DOIC nodes behaviour and maintenance of the ove=
rload control states.
In this optic, issues #23, #66, #67 and #85 were considered as the points t=
o address in priority, as a number of other issues will depend on these one=
s.
The rest of the two days meeting was dedicated to the resolution of pending=
 open issues.

* Review of the proposed solutions and Discussion on new/pending open issues

--Issue #23: DOIC behavior for realm overload

Summary: there is some inconsistency regarding the handling of request with=
out destination-host AVP. This could be illustrated by the following exampl=
e: When reaching a node receiving request without Destination-Host AVP and =
performing node selection (e.g. SLF in 3GPP), what happens if there is an a=
ctive Overload Control State (OCS) for the selected node? The different pie=
ces of text found in the current draft could lead to "redundant" abatements.

Output of the discussion:
It was agreed that:
- the "host" report type applies to:
	- request containing the Destination-Host AVP
	- request with no Destination-Host AVP BUT the node processing the request=
 is responsible of the selection of the node which the request must be addr=
essed to.

- the "realm" report type applies to request without the destination AND th=
e node processing the request does not select the final destination host.
=20
Based on these definitions, the text should be reviewed in order to clarify=
 that a node can either consume a received/generated OLR or forward the OLR=
 downstream. The idea is that the same request should not be subjected to s=
everal abatements. For instance, a request with no destination-host AVP tha=
t has survived to a throttling performed by the sending node having an acti=
ve OCS of type "realm" should not be throttled by an agent responsible for =
the final selection of the node for which there is an active OCS of type "h=
ost".

Ben has provided some text to clarify this issue. Comment/feedback are requ=
ired in order to incorporate this text in the draft.


--Issue #85: New error response

Summary: Is there a need for a new error response to address requests rejec=
ted due to overload abatement? The required behavior in response to the new=
 code is to not retry the transaction.=20

Output of the discussion:
no new error code seems to be required.
DIAMETER_TOO_BUSY can be sent back by overloaded server performing throttli=
ng to nodes supporting DOIC.
DIAMETER_UNABLE_TO_DELIVER can be sent by agent performing throttling to no=
des supporting DOIC.
DIAMETER_UNABLE_TO_COMPLY can be sent to node not supporting DOIC.
In all the cases, the expected behaviour is to limit the number of retransm=
issions sent by the reacting node.
UNABLE_TO_COMPLY as a permanent error is meant to avoid retransmissions. Bu=
t UNABLE_TO_DELIVER does not guarantee that, except if a specific notificat=
ion is added in the answer message that will indicate to the reacting node =
how to behave. One example could be to add a new AVP in the answer (e.g. "E=
rror-Diagnostic") that will be understand by node supporting DOIC. But this=
 can also be left for future extension/optimization.

This must be captured in the draft.

Issue #25: Diameter agent behaviour
Issue #27: Behavior of agent acting on behalf of Client that does not suppo=
rt DOIC Issue #69: Report Type - Realm, with absent Destination-Host

the issues above should be solved along issues #23 and #85 will be closed.


--Issue #67: OCS for Reporting Nodes - Expiry Time

Summary: in the current text describing the OCS information elements, it is=
 said that Validity Duration and expiry time need to maintained, whereas ac=
tually only the expiry time is required to manage the OCS, this information=
 element derived from the validation time received in the OLR.

output of the discussion:
It was agreed that OCS information discussed in the draft is given as illus=
tration of data required to manage the OCS in reporting/reacting node and t=
his does not imply that each of information element needs to be locally sto=
red. For instance, some data element can be derived from others.
It was also discussed how many times a reporting node needs to send an OLR =
with the validation duration set to "0" to indicate that the overload situa=
tion is over. It was agreed that the reporting node has to send the OLR wit=
h validation duration "0" as long as all the reacting maintaining a corresp=
onding active OCS have received the OLR. If there is a way for the reportin=
g node to ensure that all the nodes will receive the OLR as soon as sent, t=
he OLR can be even sent only once.

This needs to be captured in the draft.

--Issue #66

Summary: it is unclear what happens when non-supporting agent modifies the =
Origin-Host AVP in a Diameter answer that contains a host report from a ser=
ver.

Output of the discussion:
it is not possible to describe the expected behaviour of a proxy, as proxy =
manipulation is out of scope of the standardization.
SO the consensus is the following one: the current solution assumes that th=
ere is no origin-host AVP manipulation. If there is scenario in which a pro=
xy does it, it is up to the vendor and/or operator network that such origin=
-host manipulation does not impact the DOIC mechanism.

--Issue #58: Multiple Reporting Nodes for realm-routed-request type reports

Summary: In deployments where more than one node is configured to take the =
role of a reporting node for realm-routed-request reports, reacting nodes m=
ay receive in different answer messages different realm-routed-request type=
 OLRs inserted by the different reporting nodes.=20

Output of the discussion:
Initially, it was proposed to add a new AVP in OLR of type "realm", e.g. OC=
-Source AVP, identifying the node inserting the OLR and enabling the reacti=
ng to detect that OLR are coming from different sources. We came up with a =
second approach which would not require adding the OC-Source AVP: the propo=
sal would be to rely on sequence number generated on time basis.  In this c=
ase, sequence numbers used by different agent responsible for the realm wil=
l be in sync. Each approach will be further described and the group will de=
cide the preferred approach and if we have time to get this into the 04 dra=
ft (and the subsequent RFC). If not, this will go into an extension draft.


--Issue #70: Appendix B - Example

Summary: some inconsistency in the description of the behaviour of the agen=
t.

Output of the discussion:
it was agreed that this section was used as check-list to see if nothing is=
 missing in the OC mechanism. This section will be removed from the final v=
ersion of the draft.=20

--Issue #71:
Summary: Answer message may not include OC-OLR and still the reporting node=
 be overloaded, since it is considered as "no change"

Output of the discussion:
the proposed text is OK

--Issue #72: Reacting Node Behaviour when OC-OLR is not received

Summary: A clarification is required to consider that an answer message may=
 not include OC-OLR and still the reporting node be overloaded, since it is=
 considered as "no change",

Output of the discussion:
to ensure that all the (potential) reacting nodes have received the OLR, it=
 is agreed that OLR should be included in every message... unless the respo=
nding node has a mean to know that the OLR has been received (e.g. static c=
onfiguration). A proper text needs to be provided.

--Issue #73: Clarifications on the M-bit

Summary: Mbit is mentioned in different places in the 03 draft (sections 4.=
3, 6 and 6.8). It is proposed clarifications to ensure a good consistency b=
etween the different sections.=20

Output of the discussion:
It is agreed that the draft should just refer to the RFC6733 for everything=
 regarding the M-bit setting. How and when to set the M-bit is defined in t=
he base protocol.


--Issue #74: Move section 3.7

Summary: Proposal to move this section to an Appendix. It provides good inf=
ormation but having it as part of section 3 decreases the readability of th=
e document.=20

Output of the discussion:
Actually the section is 3.6 and it is ok to move this section into annex.

--Issue #75: Proposed changes to Terminology section

Summary: Propose to add a few and change a few definitions in the terminolo=
gy section.=20

Output of the discussion:
Principle OK but the section should be reviewed. "host-routed" and "realm-r=
outed" should be added into this section.

--Issue #76: add report type as part of OCS information

Summary: Propose to add report type as part of the information included in =
the OCS of a reporting node.

Output of the discussion:
It is agreed that this information may not be part of exact parameter to ma=
nage OCS. However, as the section 4.2.1.2 just provides examples of data to=
 store, it is OK to include Report type as part of possible OCS information.

--Issue #77: Section 4.2.3 - Reporting node behavior (overload report handl=
ing)

Summary: add text regarding inclusion of OC-Validity-Duration AVP and repor=
t type in the OLR

Output of the discussion:
This change is not required as the ABNF of OLR shows that these AVPs are fi=
xed AVPs and then always present in the OLR.

--Issue #78: Remove section 5.2

Summary: this section is redundant with text provided in other section.

Output of the discussion:
OK to remove the section

--Issue #79: remove the editor's note from section 5.4

summary: Propose to remove the following editor's note from section 5.4 as =
the suggested guidance already exists.=20

Output of the discussion: OK

--Issue #80: OC-Supported-Features

Summary: Propose removing the following from the last paragraph. Also propo=
se removing the editor's note:=20

Output of the discussion:
Any text related to node behaviour should be removed as this section must o=
nly define the AVP. Behaviour of the node should be describe in other secti=
ons.

--Issue #81: 6.3. OC-OLR AVP

Summary:  some text was added to decide what to do with multiple OLR of sam=
e type.

Output of the discussion:
This change is not needed as the existing text states "no more than one OLR=
 of the same type".=20

--Issue #82: 6.4. OC-Sequence-Number AVP

Summary: proposed that SQN are unique per OLR and between two DOIC nodes.=
=20

Output of the discussion:
Principle is OK. It is also clarified that the SQN needs to maintain as lon=
g as the OCS is active.

--Issue #84: 6.6. OC-Report-Type AVP
Summary: proposed to clarify that the default value of the OC-Report-Type A=
VP is 0 (i.e. the host report).=20

Output of the discussion:
Because it is agreed that the report type will be in every OLR (fixed posit=
ion), it is obvious that there is no need to define a default value when ab=
sent The discussion was initially raised when it is was proposed to make op=
tional the presence of the Report-Type in the OLR, which was not accepted.
Conclusion was that OC-Report-Type is mandatory, and fixed position. No def=
ault value is applicable


Work plan/Timeline:
- Submission of version -04 before the submission cut-off (27/10)
- Additional meeting during the IETF meeting to finalize the draft
- move the document to WGLC as soon as possible after IETF meeting.

___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


From nobody Tue Oct 21 06:02:51 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 045E41A19E3 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 02:35:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oOy0-j0SHHPB for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 02:35:51 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A63AE1A1A0A for <dime@ietf.org>; Tue, 21 Oct 2014 02:33:55 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:55296 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgVpC-0002YQ-2S for dime@ietf.org; Tue, 21 Oct 2014 02:33:55 -0700
Message-ID: <54462880.8020009@usdonovans.com>
Date: Tue, 21 Oct 2014 11:33:52 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------070607050000000908020206"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/D2ORrA3ulnP3dvLhLpI1cDARleY
X-Mailman-Approved-At: Tue, 21 Oct 2014 06:02:50 -0700
Subject: [Dime] Proposed resolution to issue 75 (terminology)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 09:35:55 -0000

This is a multi-part message in MIME format.
--------------070607050000000908020206
Content-Type: multipart/alternative;
 boundary="------------020606080901050601040704"


--------------020606080901050601040704
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have updated the document with the proposals made in issue 75.  I also 
added definitions for host-routed and realm-routed requests.

The updated text is below.

I will wait to close the issue until tomorrow to give time for comments.

I have attached the diff file.

Regards,

Steve

----

    Abatement

       Reaction to receipt of an overload report resulting in a reduction
       in traffic sent to the reporting node.  Abatement actions include
       diversion and throttling.

    Abatement Algorithm

       An algorithm requested by reporting nodes and used by reacting
       nodes to reduce the amount of traffic sent during an occurrence of
       overload control.

    Diversion

       Abatement of traffic sent to a reporting node by a reacting node
       in response to receipt of an overload report.  The abatement is
       achieved by diverting traffic from the reporting node to another
       Diameter node that is able to process the request.

    Host-Routed Request

       The set of requests that a reacting node knows will be served by a
       particular host, either due to the presence of a Destination-Host
       AVP, or by some other local knowledge on the part of the reacting
       node.

    Overload Control State (OCS)

       State describing an occurrence of overload control maintained by
       reporting and reacting nodes.

    Overload Report (OLR)

       A set of AVPs sent by a reporting node indicating the start or
       continuation of an occurrence of overload control.

    Reacting Node

       A Diameter node that consumes and acts upon a report.

    Realm-Routed Request

       The set of requests that a reacting node does not know the host
       that will service the request.

    Reporting Node

       A Diameter node that generates an overload report.  (This may or
       may not be the overloaded node.)

    Throttling

       Throttling is the reduction of the number of requests sent to an
       entity.  Throttling can include a client dropping requests, or an
       agent rejecting requests with appropriate error responses.  In
       extreme cases servers can also throttle requests when requested
       reductions in traffic does not sufficiently address the overload
       scenario.




--------------020606080901050601040704
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I have updated the document with the proposals made in issue 75.&nbsp; I
    also added definitions for host-routed and realm-routed requests.<br>
    <br>
    The updated text is below.<br>
    <br>
    I will wait to close the issue until tomorrow to give time for
    comments.<br>
    <br>
    I have attached the diff file.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
    ----<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   Abatement

      Reaction to receipt of an overload report resulting in a reduction
      in traffic sent to the reporting node.  Abatement actions include
      diversion and throttling.

   Abatement Algorithm

      An algorithm requested by reporting nodes and used by reacting
      nodes to reduce the amount of traffic sent during an occurrence of
      overload control.

   Diversion

      Abatement of traffic sent to a reporting node by a reacting node
      in response to receipt of an overload report.  The abatement is
      achieved by diverting traffic from the reporting node to another
      Diameter node that is able to process the request.

   Host-Routed Request

      The set of requests that a reacting node knows will be served by a
      particular host, either due to the presence of a Destination-Host
      AVP, or by some other local knowledge on the part of the reacting
      node.

   Overload Control State (OCS)

      State describing an occurrence of overload control maintained by
      reporting and reacting nodes.

   Overload Report (OLR)

      A set of AVPs sent by a reporting node indicating the start or
      continuation of an occurrence of overload control.

   Reacting Node

      A Diameter node that consumes and acts upon a report.

   Realm-Routed Request

      The set of requests that a reacting node does not know the host
      that will service the request.

   Reporting Node

      A Diameter node that generates an overload report.  (This may or
      may not be the overloaded node.)

   Throttling

      Throttling is the reduction of the number of requests sent to an
      entity.  Throttling can include a client dropping requests, or an
      agent rejecting requests with appropriate error responses.  In
      extreme cases servers can also throttle requests when requested
      reductions in traffic does not sufficiently address the overload
      scenario.


</pre>
    <br>
  </body>
</html>

--------------020606080901050601040704--

--------------070607050000000908020206
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 16</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 16</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   carefully, as they describe your rights and restrictions with respect</td><td> </td><td class="right">   carefully, as they describe your rights and restrictions with respect</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to this document.  Code Components extracted from this document must</td><td> </td><td class="right">   to this document.  Code Components extracted from this document must</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   include Simplified BSD License text as described in Section 4.e of</td><td> </td><td class="right">   include Simplified BSD License text as described in Section 4.e of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the Trust Legal Provisions and are provided without warranty as</td><td> </td><td class="right">   the Trust Legal Provisions and are provided without warranty as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   described in the Simplified BSD License.</td><td> </td><td class="right">   described in the Simplified BSD License.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   <span class="delete">4</span></td><td> </td><td class="rblock">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   <span class="insert">5</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   <span class="delete">6</span></td><td> </td><td class="rblock">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   <span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   <span class="delete">8</span></td><td> </td><td class="rblock">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   <span class="insert">9</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  1<span class="delete">0</span></td><td> </td><td class="rblock">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  1<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  1<span class="delete">1</span></td><td> </td><td class="rblock">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  1<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="delete">5</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">19</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="delete">0</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="delete">3</span></td><td> </td><td class="rblock">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  2<span class="insert">4</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="delete">24</span></td><td> </td><td class="rblock">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="delete">25</span></td><td> </td><td class="rblock">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">27</span></td><td> </td><td class="rblock">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">27</span></td><td> </td><td class="rblock">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="delete">29</span></td><td> </td><td class="rblock">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="delete">29</span></td><td> </td><td class="rblock">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  <span class="insert">30</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  3<span class="delete">1</span></td><td> </td><td class="rblock">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  3<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td> </td><td class="right">   Appendix A.  Issues left for future specifications  . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="delete">32</span></td><td> </td><td class="rblock">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td> </td><td class="right">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                Solution . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">                Solution . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.1.  Application Classification  . . . . . . . . . . . . . . .  <span class="delete">33</span></td><td> </td><td class="rblock">     C.1.  Application Classification  . . . . . . . . . . . . . . .  <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.2.  Application Type Overload Implications  . . . . . . . . .  <span class="delete">34</span></td><td> </td><td class="rblock">     C.2.  Application Type Overload Implications  . . . . . . . . .  <span class="insert">35</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  3<span class="delete">6</span></td><td> </td><td class="rblock">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  3<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38</td><td> </td><td class="right">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td> </td><td class="right">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 3, line 43</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 3, line 43</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The solution defined in this specification addresses Diameter</td><td> </td><td class="right">   The solution defined in this specification addresses Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload control between Diameter nodes that support the DOIC</td><td> </td><td class="right">   overload control between Diameter nodes that support the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution.  Furthermore, the solution is designed to apply to existing</td><td> </td><td class="right">   solution.  Furthermore, the solution is designed to apply to existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and future Diameter applications, requires no changes to the Diameter</td><td> </td><td class="right">   and future Diameter applications, requires no changes to the Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   base protocol [RFC6733] and is deployable in environments where some</td><td> </td><td class="right">   base protocol [RFC6733] and is deployable in environments where some</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter nodes do not implement the Diameter overload control</td><td> </td><td class="right">   Diameter nodes do not implement the Diameter overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution defined in this specification.</td><td> </td><td class="right">   solution defined in this specification.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">2.  Terminology and Abbreviations</td><td> </td><td class="right">2.  Terminology and Abbreviations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Abatement<span class="delete"> Algorithm</span></td><td> </td><td class="rblock">   Abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">Reaction to receipt of an overload report resulting in a reduction</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      in traffic sent to the reporting node.  Abatement actions include</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      diversion and throttling.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Abatement Algorithm</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      An algorithm requested by reporting nodes and used by reacting</td><td> </td><td class="right">      An algorithm requested by reporting nodes and used by reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      nodes to reduce the amount of traffic sent during an occurrence of</td><td> </td><td class="right">      nodes to reduce the amount of traffic sent during an occurrence of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      overload control.</td><td> </td><td class="right">      overload control.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Throttling</span></td><td> </td><td class="rblock">   <span class="insert">Diversion</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Throttling is the reduction of the number of requests sent to an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      entity.  Throttling can include a client dropping requests, or an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      agent rejecting requests with appropriate error responses.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Clients and agents can also choose to redirect throttled requests</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      to some other entity or entities capable of handling them.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Editor's note: Propose to add a definition of Abatement to include</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      both throttling and diversion (redirecting of messages) actions.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Then to modify this definition to include just the rejecting of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      requests and adding a definition of diversion.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Reporting Node</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">A Diameter</span> node <span class="delete">that generates</span> an overload report.  <span class="delete">(This may or</span></td><td> </td><td class="rblock">      <span class="insert">Abatement of traffic sent to a reporting</span> node <span class="insert">by a reacting node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      may not be</span> the <span class="delete">overloaded node.)</span></td><td> </td><td class="rblock"><span class="insert">      in response to receipt of</span> an overload report.  <span class="insert">The abatement is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      achieved by diverting traffic from the reporting node to another</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Diameter node that is able to process</span> the <span class="insert">request.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Reacting Node</span></td><td> </td><td class="rblock">   <span class="insert">Host-Routed Request</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0021" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">A Diameter node</span> that <span class="delete">consumes and acts upon</span> a <span class="delete">report.  Note that</span></td><td> </td><td class="rblock">      <span class="insert">The set of requests</span> that a reacting node <span class="insert">knows will be served by a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      "act upon" does not necessarily mean the</span> reacting node <span class="delete">applies an</span></td><td> </td><td class="rblock"><span class="insert">      particular host, either due</span> to <span class="insert">the presence of</span> a <span class="insert">Destination-Host</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      abatement algorithm; it might decide</span> to <span class="delete">delegate that downstream,</span></td><td> </td><td class="rblock"><span class="insert">      AVP, or by some other local knowledge on the part of the reacting</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      in which case it also becomes</span> a <span class="delete">"reporting node".</span></td><td> </td><td class="rblock"><span class="insert">      node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Control State (OCS)</td><td> </td><td class="right">   Overload Control State (OCS)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      State describing an occurrence of overload control maintained by</td><td> </td><td class="right">      State describing an occurrence of overload control maintained by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reporting and reacting nodes.</td><td> </td><td class="right">      reporting and reacting nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Report (OLR)</td><td> </td><td class="right">   Overload Report (OLR)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      A set of AVPs sent by a reporting node indicating the start or</td><td> </td><td class="right">      A set of AVPs sent by a reporting node indicating the start or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      continuation of an occurrence of overload control.</td><td> </td><td class="right">      continuation of an occurrence of overload control.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0022" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">Reacting Node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      A Diameter node that consumes and acts upon a report.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Realm-Routed Request</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      The set of requests that a reacting node does not know the host</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      that will service the request.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Reporting Node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      A Diameter node that generates an overload report.  (This may or</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      may not be the overloaded node.)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Throttling</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Throttling is the reduction of the number of requests sent to an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      entity.  Throttling can include a client dropping requests, or an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      agent rejecting requests with appropriate error responses.  In</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      extreme cases servers can also throttle requests when requested</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      reductions in traffic does not sufficiently address the overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      scenario.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">3.  Solution Overview</td><td> </td><td class="right">3.  Solution Overview</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The Diameter Overload Information Conveyance (DOIC) mechanism allows</td><td> </td><td class="right">   The Diameter Overload Information Conveyance (DOIC) mechanism allows</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter nodes to request other nodes to perform overload abatement</td><td> </td><td class="right">   Diameter nodes to request other nodes to perform overload abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   actions, that is, actions to reduce the load offered to the</td><td> </td><td class="right">   actions, that is, actions to reduce the load offered to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded node or realm.</td><td> </td><td class="right">   overloaded node or realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A Diameter node that supports DOIC is known as a "DOIC node".  Any</td><td> </td><td class="right">   A Diameter node that supports DOIC is known as a "DOIC node".  Any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter node can act as a DOIC node, including clients, servers, and</td><td> </td><td class="right">   Diameter node can act as a DOIC node, including clients, servers, and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agents.  DOIC nodes are further divided into "Reporting Nodes" and</td><td> </td><td class="right">   agents.  DOIC nodes are further divided into "Reporting Nodes" and</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 22 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>43 lines changed or deleted</i></th><th><i> </i></th><th><i>61 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The s
 et of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttlin
 g can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by
 \n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and
  a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs
  apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts woul
 d do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that co
 ntained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported
 -Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   de
 termine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the l
 oss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature 
 AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  A
 ny semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condi
 tion Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AV
 P.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n
 \nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to ind
 icate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new value
 s for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X     
                              Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n     
             standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC feature
 s include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate su
 pport for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                    
   October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorit
 hm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n
 \n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a gi
 ven pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity D
 uration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes als
 o delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support o
 f the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the 
 existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP o
 f the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\
 n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacti
 ng\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer v
 alid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic red
 uction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Suppo
 rted-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for 
 , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-durat
 ion contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC673
 3] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for han
 dling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorit
 hm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.
 \n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes 
 an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   reque
 sted percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\n
 Internet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-V
 ector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      
 OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR
 _DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended 
 to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequ
 ence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-
 Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let i
 t do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      ass
 ociated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      requ
 est matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP appl
 ies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n              
                                            _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +------------------------
 --------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applicatio
 ns, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different pa
 th and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocate
 d from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multi
 ple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermedi
 aries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to explo
 it the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.
 net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC            
           October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism 
 to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload
  reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, o
 perators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification co
 uld\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Co
 nsiderations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n      
         August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can b
 e added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to 
 be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integratin
 g the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Ses
 sion-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter ses
 sion-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered 
 load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      F
 or pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      co
 nsideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\
 n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an int
 ra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application de
 signers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or applic
 ation specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively tha
 n\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over
  others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Exten
 sions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   
 document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trus
 t\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   4\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   6\
 n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   8\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  10\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  11\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  15\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . .
  . . . . . . . . . . . . . . . . .  19\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  20\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  23\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  24\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  25\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . . 
  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  27\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  27\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  29\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  29\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  31\n     11.2.  Infor
 mative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  32\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  32\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  33\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  33\n     C.2.  Application Type Overload Implications  . . . . . . . . .  34\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  36\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a b
 ase solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatemen
 t Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Throttling\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.\n      Clients and agents can also choose to redirect throttled requests\n      to some other entity or entities capable of handling them.\n\n      Editor\'s note: Propose to add a definition of Abatement to include\n      both throttling and diversion (redirecting of messages) actions.\n      Then to modify this definition to include just the rejecting of\n      requests and adding a definition of diversion.\n\n   Re
 porting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.  Note that\n      "act upon" does not necessarily mean the reacting node applies an\n      abatement algorithm; it might decide to delegate that downstream,\n      in which case it also becomes a "reporting node".\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n
    A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Di
 ameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A give
 n OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For 
 example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   r
 equests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent f
 rom a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AV
 Ps (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (
 i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n   The DCA mechanism uses the O
 C-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n\n\n\nKorhonen, et al.    
      Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  
 As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for thi
 s specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\
 n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the c
 apacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to 
 the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are exp
 ected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   
 is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _-
 -(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n  
  This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If t
 he message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken 
 when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node MUST indicate support 
 for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-F
 eatures AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type r
 equests.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A rep
 orting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer messa
 ge of application app-id\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig
 -Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm wi
 th the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently disc
 arded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or
 \n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the valu
 e stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload 
 control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The
  operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the p
 ath between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Fe
 ature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of
  an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.
 \n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and h
 ow they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 201
 5                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the cas
 e\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavi
 or\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicatin
 g\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  
 The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The goal of this behav
 ior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control
 \n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specificatio
 n is supported.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction perc
 entage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  O
 C-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting n
 ode.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of tim
 eout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft            
         DOIC                      October 2014\n\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that c
 ontained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any 
 server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is
  in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped   
   _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   
 command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node 
 without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests th
 at are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n  
  Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protec
 tion, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authoriz
 ation decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a re
 sponse.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the 
 information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   
 requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstr
 eam nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n
    from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers
  should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishuf
 eng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n           
    Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cov
 er all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, t
 here is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can in
 clude cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n\n\n\nKorhonen, et al
 .         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n  
  Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the stra
 tegy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless app
 lications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the 
 sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any
  resulting session clean-up procedures.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application s
 essions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n
 \nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work t
 han\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session re
 quests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n\n\n\nKorhonen, et al.         Expires April 2
 4, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex
  9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------070607050000000908020206--


From nobody Tue Oct 21 06:03:00 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A1E0F1A1A90 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:22:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6ALWPEXyWKLa for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 04:22:23 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A2DBC1A1A93 for <dime@ietf.org>; Tue, 21 Oct 2014 04:22:23 -0700 (PDT)
Received: from [64.31.33.44] (port=56411 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgXW8-0009z3-B8 for dime@ietf.org; Tue, 21 Oct 2014 04:22:21 -0700
Message-ID: <544641EA.4030203@usdonovans.com>
Date: Tue, 21 Oct 2014 13:22:18 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------080703070807070005060703"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/WnWjS_DRK_zqj4c4guVWBHwy7uA
X-Mailman-Approved-At: Tue, 21 Oct 2014 06:02:50 -0700
Subject: [Dime] Resolution of issue 58
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 11:22:26 -0000

This is a multi-part message in MIME format.
--------------080703070807070005060703
Content-Type: multipart/alternative;
 boundary="------------030800030604030006080601"


--------------030800030604030006080601
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I have added the following wording to the draft in github:

    This document assumes that there is a single source for realm-reports
    for a given realm, or that if multiple nodes can send realm reports,
    that each such node has full knowledge of the overload state of the
    entire realm.  A reacting node cannot distinguish between receiving
    realm-reports from a single node, or from multiple nodes.

    If multiple such nodes exist, they MUST ensure that realm-reports are
    kept in sync.  This includes synchronizing the sequence numbers as
    well as the reported overload state.  The method of doing so is up to
    the implementation.  One way to keep the sequence numbers in sync is
    to generate the sequence numbers based on system time.

I also corrected a previous change in the same that was missing a few 
words.  Thanks to Ulrich for pointing this out.

The original text was:

When generating sequence numbers for , the new
    sequence number MUST be greater than any sequence number in an active
    (unexpired) overload report previously sent by the reporting node.
    This property MUST hold over a reboot of the reporting node.


The new text is:

When generating sequence numbers for new overload conditions, the new
    sequence number MUST be greater than any sequence number in an active
    (unexpired) overload report previously sent by the reporting node.
    This property MUST hold over a reboot of the reporting node.


I have attached the resulting diff file.

Regards,

Steve

--------------030800030604030006080601
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I have added the following wording to the draft in github:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>   This document assumes that there is a single source for realm-reports
   for a given realm, or that if multiple nodes can send realm reports,
   that each such node has full knowledge of the overload state of the
   entire realm.  A reacting node cannot distinguish between receiving
   realm-reports from a single node, or from multiple nodes.

   If multiple such nodes exist, they MUST ensure that realm-reports are
   kept in sync.  This includes synchronizing the sequence numbers as
   well as the reported overload state.  The method of doing so is up to
   the implementation.  One way to keep the sequence numbers in sync is
   to generate the sequence numbers based on system time.</pre>
    I also corrected a previous change in the same that was missing a
    few words.&nbsp; Thanks to Ulrich for pointing this out.<br>
    <br>
    The original text was:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>When generating sequence numbers for , the new
   sequence number MUST be greater than any sequence number in an active
   (unexpired) overload report previously sent by the reporting node.
   This property MUST hold over a reboot of the reporting node.</pre>
    <br>
    The new text is: <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <pre>When generating sequence numbers for new overload conditions, the new
   sequence number MUST be greater than any sequence number in an active
   (unexpired) overload report previously sent by the reporting node.
   This property MUST hold over a reboot of the reporting node.</pre>
    <br>
    I have attached the resulting diff file.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
  </body>
</html>

--------------030800030604030006080601--

--------------080703070807070005060703
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 18, line 38</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 18, line 38</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td> </td><td class="right">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If OLR is for a new overload condition and there is no unexpired</td><td> </td><td class="right">   If OLR is for a new overload condition and there is no unexpired</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report for previous overload conditions at any reacting node</td><td> </td><td class="right">   overload report for previous overload conditions at any reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   then the reporting node MAY set the sequence number to any value.</td><td> </td><td class="right">   then the reporting node MAY set the sequence number to any value.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reacting node MAY update the overload report with new reduction</td><td> </td><td class="right">   The reacting node MAY update the overload report with new reduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   percentages.  When doing so, the reacting node MUST increase the</td><td> </td><td class="right">   percentages.  When doing so, the reacting node MUST increase the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number in the new OLR sent.</td><td> </td><td class="right">   sequence number in the new OLR sent.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   When generating sequence numbers for <span class="delete">,</span> the new sequence number MUST</td><td> </td><td class="rblock">   When generating sequence numbers for <span class="insert">new overload conditions,</span> the new</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   be greater than any sequence number in an active (unexpired) overload</td><td> </td><td class="rblock">   sequence number MUST be greater than any sequence number in an active</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   report previously sent by the reporting node.  This property MUST</td><td> </td><td class="rblock">   (unexpired) overload report previously sent by the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   hold over a reboot of the reporting node.</td><td> </td><td class="rblock">   This property MUST hold over a reboot of the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      All OLRs sent have an expiration time calculated by adding the</td><td> </td><td class="right">      All OLRs sent have an expiration time calculated by adding the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      validity-duration contained in the OLR to the time the message was</td><td> </td><td class="right">      validity-duration contained in the OLR to the time the message was</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      sent.  Transit time for the OLR can be safely ignored.  The</td><td> </td><td class="right">      sent.  Transit time for the OLR can be safely ignored.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reporting node can ensure that all reacting nodes have received</td><td> </td><td class="right">      reporting node can ensure that all reacting nodes have received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the OLR by continuing to send it in answer messages until the</td><td> </td><td class="right">      the OLR by continuing to send it in answer messages until the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expiration time for all OLRs sent for that overload contition have</td><td> </td><td class="right">      expiration time for all OLRs sent for that overload contition have</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expired.</td><td> </td><td class="right">      expired.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">This document assumes that there is a single source for realm-reports</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   for a given realm, or that if multiple nodes can send realm reports,</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   that each such node has full knowledge of the overload state of the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entire realm.  A reacting node cannot distinguish between receiving</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   realm-reports from a single node, or from multiple nodes.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   If multiple such nodes exist, they MUST ensure that realm-reports are</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   kept in sync.  This includes synchronizing the sequence numbers as</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   well as the reported overload state.  The method of doing so is up to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the implementation.  One way to keep the sequence numbers in sync is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to generate the sequence numbers based on system time.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.3.  Protocol Extensibility</td><td> </td><td class="right">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The extention may also define new AVPs for use in DOIC Capability</td><td> </td><td class="right">   The extention may also define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 2 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>4 lines changed or deleted</i></th><th><i> </i></th><th><i>16 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The s
 et of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttlin
 g can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by
 \n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and
  a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs
  apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts woul
 d do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that co
 ntained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported
 -Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   de
 termine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the l
 oss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature 
 AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  A
 ny semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condi
 tion Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AV
 P.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n
 \nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to ind
 icate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new value
 s for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X     
                              Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n     
             standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC feature
 s include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate su
 pport for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                    
   October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorit
 hm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n
 \n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a gi
 ven pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity D
 uration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes als
 o delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support o
 f the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the 
 existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP o
 f the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\
 n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacti
 ng\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer v
 alid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic red
 uction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Suppo
 rted-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for 
 new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      All OLRs sent have an expiration time calculated by adding the
 \n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequ
 ence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that
  are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features
  (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of t
 raffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n
    4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports. 
  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the request
 ed percentage of new requests will be given abatement\n      treatment.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded
  node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the appl
 ication and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n           
                    * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information n
 ecessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\
 n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   
 between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in t
 he default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload
  report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the r
 eceived message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for diff
 erent "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Valu
 es greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +------------------
 --------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x   
    Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the req
 uest\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the r
 equest would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Ove
 rload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may 
 wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n
 \n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  Thi
 s\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within th
 at peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always use
 d in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other so
 urces from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust req
 uirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forward
 ing a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substant
 ial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo,
  V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Ov
 erload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A se
 parate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents
  with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  Th
 is discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each
  other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discus
 sed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.
   For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions la
 ter in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session 
 requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There ar
 e cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n  
     the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can gene
 rally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      f
 or routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter clien
 t and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: s
 rdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                         
                                          Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  
 Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publi
 cation of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .
   11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs 
 . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . .
  . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  D
 IAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solutio
 n defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 
 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of 
 AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the 
 overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on beha
 lf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n
    (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning
  of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   re
 ceiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n
    While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existi
 ng application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have 
 fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows 
 for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenari
 o, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for po
 ssible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page
  8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host 
 reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application
 .  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n
    overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibil
 ity\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional i
 nformation\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )
 --_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the client
 s when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled
  by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatemen
 t algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Su
 pported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feat
 ure-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the followin
 g OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within
  OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when 
 receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow 
 window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatemen
 t, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [
 Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding D
 iameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP 
 in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for , the new sequence number MUST\n   be greater than any sequence number in an active (unexpired) overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporti
 ng node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n4.3.  Protocol Extensibility\n\n   The overload control solu
 tion can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining n
 ew report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy
  of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatemen
 t treatment, otherwise the request is given normal\n       routing treatment.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determ
 ines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction 
 as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until th
 e reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidanc
 e in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n\n\n\nKorhonen, et al.         Expires April 24,
  2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to 
 decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OL
 R AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   gr
 eater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by 
 the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP 
 (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n    
   request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific s
 erver\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   n
 ode is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +
 --------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, 
 et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the requ
 est\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that suppor
 ts the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   regist
 ry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligen
 ce or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer iden
 tities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers
  but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an ov
 erload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Dia
 meter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from s
 ources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   a
 bility to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing
 , the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich
  Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Info
 rmative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", 
 December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clari
 fications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topol
 ogy hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for hand
 ling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter
  command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitig
 ating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an
  indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.
 \n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      reje
 cting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is
  notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There ex
 ists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application r
 equirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other reque
 sts.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle sessi
 on-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_
 \nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------080703070807070005060703--


From nobody Tue Oct 21 07:46:38 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4088B1A86EE for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 07:46:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YQ2nuNnazmds for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 07:46:33 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 460AB1A6F45 for <dime@ietf.org>; Tue, 21 Oct 2014 07:46:33 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9LEkWwn066101 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 21 Oct 2014 09:46:32 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <5446190F.2070804@usdonovans.com>
Date: Tue, 21 Oct 2014 09:46:31 -0500
X-Mao-Original-Outgoing-Id: 435595591.814737-dd4b223c4db96d60ac960582baa3022d
Content-Transfer-Encoding: quoted-printable
Message-Id: <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/LS4TL1wSJwcjm63DytQH0FnNVBI
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 14:46:37 -0000

Did we intend to include anything about Lionel's suggestion on =
UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make sure we =
didn't forget to consider it.)

I also have one comment inline. Otherwise it looks good to me.


> On Oct 21, 2014, at 3:27 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> I have incorporated the following text into the document in the =
existing, previously empty, section 7. Error Response Codes.
>=20
> I will wait until tomorrow to close issue 85 to allow for discussion =
of the proposed wording.
>=20
> I have attached the diff as this wording is not in the draft.
>=20
> Regards,
>=20
> Steve
>=20
> ---
>=20
>    When a DOIC node rejects a Diameter request due to throttling, the
>    DOIC node needs to select the appropriate error response code.

Do we have separate text saying the node MUST send an error? If not, I =
suggest changing this to "... MUST respond with an appropriate error =
response code."

The change from "the" to "an" was intentional. Since we are using SHOULD =
below for the actual choice, I assume we intend to leave room for an =
implementation to make other choices if it has a good reason.=20


>  This
>    determination is made based on the probability of the request
>    succeeding if retried on a different path.
>=20
>    The DIAMETER_TOO_BUSY response code SHOULD be used when the request
>    is likely to succeed on a different path.
>=20
>       For instance, if the request arrived at the reporting node =
without
>       a Destination-Host AVP then the reporting node might determine
>       that there is an alternative Diameter node that could =
successfully
>       process the request and that retrying the transaction would not
>       negatively impact the reporting node.
>=20
>    The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>    indicate that the request should not be retried.  This is used when
>    the request is not likely to succeed on a different path and =
retrying
>    would consume valuable resources during an occurance of overload.
>=20
>       For instance, if the request arrived at the reporting node with =
a
>       Destination-Host AVP populated with its own Diameter identity =
then
>       the reporting node can assume that retrying the request would
>       result in it coming to the same reporting node.
>=20
>       A second example is when an agent that supports the DOIC =
solution
>       is preforming the role of a reacting node for a non supporting
>       client.  Requests that are rejected as a result of DOIC =
throttling
>       in this scenario would generally be rejected with a
>       DIAMETER_UNABLE_TO_COMPLY response code.
>=20
>=20
>=20
>=20
> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>> I agree.
>>=20
>> Lionel
>>=20
>> Envoy=E9 depuis mon Sony Xperia SP d'Orange
>>=20
>> ---- Ben Campbell a =E9crit ----
>>=20
>>=20
>>=20
>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> =
<lionel.morand@orange.com>
>>>  wrote:
>>>=20
>>> Hi,
>>>=20
>>> I think that:
>>> - TOO_BUSY should be restricted to server answer
>>>=20
>> One of the reasons I think we need to state this by intended result =
and not by role in the network, is that I expect that an overloaded =
agent (according to the agent overload draft) might send TOO-BUSY. And a =
server that acts as an overload authority for a realm might send =
UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a =
Destination-Host AVP.
>>=20
>>=20
>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no =
retransmission is required
>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC =
node when retransmission to an alternate peer could be better.
>>>=20
>>> As a second step, we could enhance the answer message (in this draft =
or in a separate draft if preferred) with an error message (e.g. =
"Error-Diagnostic") that could provide further information to "new" node =
that will be then able to adapt their behavior.
>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an =
Error-Diagnostic set to e.g. "severe overload", besides the OLR in the =
answer, will know that retransmission on the path or a on a different =
path will likely cause the same error. If no error-diagnostic is sent =
back or ignored by the non-supporting-DOOIC node, we will go back to the =
situation prior this draft.
>>>=20
>>> Regards,
>>>=20
>>> Lionel
>>>=20
>>> -----Message d'origine-----
>>> De : DiME [
>>> mailto:dime-bounces@ietf.org
>>> ] De la part de Ben Campbell
>>> Envoy=E9 : lundi 20 octobre 2014 19:10
>>> =C0 : Steve Donovan
>>> Cc :=20
>>> dime@ietf.org
>>>=20
>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>=20
>>> I agree that we should generalize these, but I think the direction =
is not quite right. More inline:
>>>=20
>>>=20
>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan =
<srdonovan@usdonovans.com>
>>>>  wrote:
>>>>=20
>>>> We came to the following agreements on error responses:
>>>>=20
>>>> - Servers rejecting a Diameter request due to an overload condition =
should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>=20
>>>> - Agents rejecting a Diameter request due to an overload condition =
should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>=20
>>>> I propose that we generalize this to the following:
>>>>=20
>>>> - Reporting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>=20
>>>> - Reacting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a UNABLE-TO-COMPLY.
>>>>=20
>>> I don't think we should state this in terms of reaction and =
reporting nodes. I think we should generalize to expected behavior. =
Also, in the case where the downstream node does not support DOIC, I'm =
not sure it makes sense to say the throttling node is really a reporting =
node (for that particular relationship.)
>>>=20
>>> My suggestion is we say that, if the throttling node has sufficient =
information to determine that the request is not likely to succeed if =
retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not =
have that information, it SHOULD send TOO-BUSY.   (we should discuss why =
this is not a MUST if we have the conditionals in place.)
>>>=20
>>> Then we could go on to say that a reaction node (or agent) would =
typically fall under the first category, and a reporting node (or =
server) would typically fall under the second. But there certainly may =
be cases where a reacting node does not know if other paths could work, =
and where a reporting node might know that they couldn't.
>>>=20
>>>=20
>>>=20
>>>> This would mean that an agent acting as a reporting node (i.e.; =
server doesn't support DOIC or agent is acting as a server front end) =
would sent the TOO_BUSY response and an agent acting as a reacting node =
(i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY =
response.
>>>>=20
>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 =
on agent behavior will be deleted.
>>>>=20
>>>> I will hold off making this change until tomorrow (Tuesday =
morning).
>>>>=20
>>>> Regards,
>>>>=20
>>>> Steve
>>>>=20
>>>> _______________________________________________
>>>> DiME mailing list
>>>>=20
>>>> DiME@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/dime
>>> _______________________________________________
>>> DiME mailing list
>>>=20
>>> DiME@ietf.org
>>> https://www.ietf.org/mailman/listinfo/dime
>>>=20
>>>=20
>>> =
__________________________________________________________________________=
_______________________________________________
>>>=20
>>> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>>=20
>>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>>> they should not be distributed, used or copied without =
authorisation.
>>> If you have received this email in error, please notify the sender =
and delete this message and its attachments.
>>> As emails may be altered, Orange is not liable for messages that =
have been modified, changed or falsified.
>>> Thank you.
>>>=20
>>>=20
>>=20
>> =
__________________________________________________________________________=
_______________________________________________
>>=20
>> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>=20
>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>> they should not be distributed, used or copied without authorisation.
>> If you have received this email in error, please notify the sender =
and delete this message and its attachments.
>> As emails may be altered, Orange is not liable for messages that have =
been modified, changed or falsified.
>> Thank you.
>>=20
>>=20
>>=20
>=20
> <Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html>


From nobody Tue Oct 21 14:25:50 2014
Return-Path: <jean-jacques.trottin@alcatel-lucent.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 58A161A8743 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 14:25:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bO7omVd35FXk for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 14:25:42 -0700 (PDT)
Received: from smtp-fr.alcatel-lucent.com (fr-hpgre-esg-01.alcatel-lucent.com [135.245.210.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1C8DC1A8746 for <dime@ietf.org>; Tue, 21 Oct 2014 14:25:42 -0700 (PDT)
Received: from fr711usmtp1.zeu.alcatel-lucent.com (unknown [135.239.2.122]) by Websense Email Security Gateway with ESMTPS id 5A850F686C932 for <dime@ietf.org>; Tue, 21 Oct 2014 21:25:36 +0000 (GMT)
Received: from FR711WXCHHUB02.zeu.alcatel-lucent.com (fr711wxchhub02.zeu.alcatel-lucent.com [135.239.2.112]) by fr711usmtp1.zeu.alcatel-lucent.com (GMO) with ESMTP id s9LLPdvw018455 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL) for <dime@ietf.org>; Tue, 21 Oct 2014 23:25:40 +0200
Received: from FR712WXCHMBA12.zeu.alcatel-lucent.com ([169.254.8.50]) by FR711WXCHHUB02.zeu.alcatel-lucent.com ([135.239.2.112]) with mapi id 14.03.0195.001; Tue, 21 Oct 2014 23:25:39 +0200
From: "TROTTIN, JEAN-JACQUES (JEAN-JACQUES)" <jean-jacques.trottin@alcatel-lucent.com>
To: "dime@ietf.org" <dime@ietf.org>
Thread-Topic: Resolution of issue #73 clarifications on  M-bit 
Thread-Index: Ac/tdY66y3ceVxhFS/mKh6XGaLKHmw==
Date: Tue, 21 Oct 2014 21:25:39 +0000
Message-ID: <E194C2E18676714DACA9C3A2516265D2026E8B37@FR712WXCHMBA12.zeu.alcatel-lucent.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [135.239.27.41]
Content-Type: multipart/alternative; boundary="_000_E194C2E18676714DACA9C3A2516265D2026E8B37FR712WXCHMBA12z_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/LJ26-zxcS56YVmINyF5c5F715d8
Subject: [Dime] Resolution of issue #73 clarifications on  M-bit
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 21:25:46 -0000

--_000_E194C2E18676714DACA9C3A2516265D2026E8B37FR712WXCHMBA12z_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Dear all

In reference to the Lionel's minutes on  issue #73 Clarifications on the M-=
bit:

Summary: Mbit is mentioned in different places in the 03 draft (sections 4.=
3, 6 and 6.8). It is proposed clarifications to ensure a good consistency b=
etween the different sections.



Output of the discussion:

It is agreed that the draft should just refer to the RFC6733 for everything=
 regarding the M-bit setting. How and when to set the M-bit is defined in t=
he base protocol.

I will follow the output of the discussion, taking into account that I thin=
k we still need to indicate that for existing applications, the Mbit should=
 be cleared for backward compatibility.

Hereafter the different places where M-bit is mentioned with the proposed c=
hanges

In 4.3.  Protocol Extensibility

Existing text:
   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.  More specifically, the sub-AVPs inside the
   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.
   However, when overload control AVPs are piggybacked on top of an
   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.

Proposal: To keep the reference to RFC 6733;  the text about  existing appl=
ications is removed as  overlapping with the 6.8 one.

   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.


In 6.  Attribute Value Pairs

Existing text
   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.

   When added to existing commands, both OC-Feature-Vector and OC-OLR
   AVPs SHOULD have the M-bit flag cleared to avoid backward
   compatibility issues.

   A new application specification can incorporate the overload control
   mechanism specified in this document by making it mandatory to
   implement for the application and referencing this specification
   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs
   reused in newly defined Diameter applications SHOULD have the M-bit
   flag set.  However, it is the responsibility of the Diameter
   application designers to define how overload control mechanisms works
   on that application.


Proposal: to remove two paragraphs as overlapping with 6.8
   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.


In 6.8.  Attribute Value Pair flag rules

Existing text
   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP.

   The Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.  Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set.

Proposal: To keep the reference to RFC 6733 and the particular case of exis=
ting applications

   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP. However, the
   Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.

If OK, I will update the proposal for the issue #73 in the Dime Tracker

Best regards

JJacques

--_000_E194C2E18676714DACA9C3A2516265D2026E8B37FR712WXCHMBA12z_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Texte brut Car";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:Consolas;}
span.TextebrutCar
	{mso-style-name:"Texte brut Car";
	mso-style-priority:99;
	mso-style-link:"Texte brut";
	font-family:Consolas;}
span.EmailStyle19
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span lang=3D"FR">Dear all <o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"FR"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">In reference to the Lionel&#8217;s minutes on&nbsp; =
issue #73 Clarifications on the M-bit:
<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">Summary: Mbit is men=
tioned in different places in the 03 draft (sections 4.3, 6 and 6.8). It is=
 proposed clarifications to ensure a good consistency between the different=
 sections.
<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt"><o:p>&nbsp;</o:p></p=
>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">Output of the discus=
sion:<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">It is agreed that th=
e draft should just refer to the RFC6733 for everything regarding the M-bit=
 setting. How and when to set the M-bit is defined in the base protocol.<o:=
p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I will follow the output of the discussion, taking i=
nto account that I think we still need to indicate that for existing applic=
ations, the Mbit should be cleared for backward compatibility.
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Hereafter the different places where M-bit is mentio=
ned with the proposed changes<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">In 4.3.&nbsp; Protocol Extensibility<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Existing text: <o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp;&nbsp;It should be noted that [RFC6733] define=
d Grouped AVP extension<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanisms apply.&nbsp; This allows, for exam=
ple, defining a new feature<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; that is mandatory to be understood even when =
piggybacked on an<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; existing applications.&nbsp; More specificall=
y, the sub-AVPs inside the<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; OC-Supported-Features and OC-OLR AVP MAY have=
 the M-bit set.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; However, when overload control AVPs are piggy=
backed on top of an<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; existing applications, setting M-bit in sub-A=
VPs is NOT RECOMMENDED.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Proposal: To keep the reference to RFC 6733;&nbsp; t=
he text about&nbsp; existing applications is removed as&nbsp; overlapping w=
ith the 6.8 one.<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; It should be noted that [RFC6733] defined Gro=
uped AVP extension<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanisms apply.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">In 6.&nbsp; Attribute Value Pairs<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Existing text<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; This section describes the encoding and seman=
tics of the Diameter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Overload Indication Attribute Value Pairs (AV=
Ps) defined in this<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; document.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; When added to existing commands, both OC-Feat=
ure-Vector and OC-OLR<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; AVPs SHOULD have the M-bit flag cleared to av=
oid backward<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; compatibility issues.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; A new application specification can incorpora=
te the overload control<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanism specified in this document by makin=
g it mandatory to<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; implement for the application and referencing=
 this specification<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; normatively.&nbsp; In such a case, the OC-Fea=
ture-Vector and OC-OLR AVPs<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; reused in newly defined Diameter applications=
 SHOULD have the M-bit<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; flag set.&nbsp; However, it is the responsibi=
lity of the Diameter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; application designers to define how overload =
control mechanisms works<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; on that application.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Proposal: to remove two paragraphs as overlapping wi=
th 6.8<b><span style=3D"font-size:12.0pt">
<o:p></o:p></span></b></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp;&nbsp;This section describes the encoding and =
semantics of the Diameter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Overload Indication Attribute Value Pairs (AV=
Ps) defined in this<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; document.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">In 6.8.&nbsp; Attribute Value Pair flag rules<span s=
tyle=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">Existing text<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; As described in the Diameter base protocol [R=
FC6733], the M-bit<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; setting for a given AVP is relevant to an app=
lication and each<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; command within that application that includes=
 the AVP.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; The Diameter overload control AVPs SHOULD alw=
ays be sent with the<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit cleared when used within existing Diame=
ter applications to<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; avoid backward compatibility issues.&nbsp; Ot=
herwise, when reused in newly<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; defined Diameter applications, the DOC relate=
d AVPs SHOULD have the<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit set.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Proposal:<b><span style=3D"font-size:12.0pt"> </span=
></b>To keep the reference to RFC 6733 and the particular case of existing =
applications
<o:p></o:p></p>
<p class=3D"MsoNormal"><b><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p=
></span></b></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; As described in the Diameter base protocol [R=
FC6733], the M-bit<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; setting for a given AVP is relevant to an app=
lication and each<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; command within that application that includes=
 the AVP. However, the<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Diameter overload control AVPs SHOULD always =
be sent with the<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit cleared when used within existing Diame=
ter applications to<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; avoid backward compatibility issues.<o:p></o:=
p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">If OK, I will update the proposal for the issue #73 =
in the Dime Tracker
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Best regards<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">JJacques <o:p></o:p></p>
</div>
</body>
</html>

--_000_E194C2E18676714DACA9C3A2516265D2026E8B37FR712WXCHMBA12z_--


From nobody Tue Oct 21 15:10:19 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3E2B41A879A for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 15:10:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.791
X-Spam-Level: 
X-Spam-Status: No, score=0.791 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iuPqo_emGzPa for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 15:10:08 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4FE341A8764 for <dime@ietf.org>; Tue, 21 Oct 2014 15:10:07 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9LMA5iI018797 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 21 Oct 2014 17:10:06 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
From: Ben Campbell <ben@nostrum.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9EFDF2A6-3419-457F-B098-42E53345FCC4"
X-Mao-Original-Outgoing-Id: 435622205.185286-c523a46eb674ef8e08bf7466b23266b6
Message-Id: <2A9AB49D-E2FA-4BF9-9399-361464482DA3@nostrum.com>
Date: Tue, 21 Oct 2014 17:10:05 -0500
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
To: "dime@ietf.org list" <dime@ietf.org>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/4mj-RJ45ieibX-Km-CiVPm0alng
Subject: [Dime] DOIC Requirements Analysis
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Oct 2014 22:10:16 -0000

--Apple-Mail=_9EFDF2A6-3419-457F-B098-42E53345FCC4
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi,
Benoit requested that the DOIC draft include a requirements analysis =
against the requirements from RFC 7068. I=E2=80=99ve made an attempt =
that that, below.
I realize not everyone will agree on my analysis, and there is =
considerable room for discussion. However, given Benoit=E2=80=99s =
request, I think it=E2=80=99s important to get these in as soon as =
possible; if not in 04, then soon afterwards (i.e. before WGLC, and =
preferably before Honolulu.)
I also created a branch called =E2=80=9CReqs-Analysis" in the GitHub =
repository that contains  these in XML form.
Thanks!
Ben.
----------------------------------------------
Appendix D.  Requirements Analysis

   This section analyzes the mechanism described in this document
   against the set of requirements detailed in [RFC7068].

D.1.  General

   REQ 1:  The solution MUST provide a communication method for Diameter
           nodes to exchange load and overload information.

           *Partially Compliant*. The mechanism uses new AVPs
           piggybacked on existing Diameter messages to exchange
           overload information.  It does not currently support "load"
           information.  Indication of "Load" information has been left
           for a future extension.



   REQ 2:  The solution MUST allow Diameter nodes to support overload
           control regardless of which Diameter applications they
           support.  Diameter clients and agents must be able to use the
           received load and overload information to support graceful
           behavior during an overload condition.  Graceful behavior
           under overload conditions is best described by REQ 3.

           *Compliant*. The DOIC AVPs can be used in any application
           that allows the extension of AVPs.



   REQ 3:  The solution MUST limit the impact of overload on the overall
           useful throughput of a Diameter server, even when the
           incoming load on the network is far in excess of its
           capacity.  The overall useful throughput under load is the
           ultimate measure of the value of a solution.

           *Compliant*. DOIC provides information that nodes can use to
           reduce the impact of overload.



   REQ 4:  Diameter allows requests to be sent from either side of a
           connection, and either side of a connection may have need to
           provide its overload status.  The solution MUST allow each
           side of a connection to independently inform the other of its
           overload status.

           *Compliant*. DOIC AVPs can be included regardless of
           transaction "direction"



   REQ 5:  Diameter allows nodes to determine their peers via dynamic
           discovery or manual configuration.  The solution MUST work
           consistently without regard to how peers are determined.

           *Compliant*. DOIC contains no assumptions about how peers are
           discovered.  [Note: This may require further study]



   REQ 6:  The solution designers SHOULD seek to minimize the amount of
           new configuration required in order to work.  For example, it
           is better to allow peers to advertise or negotiate support
           for the solution, rather than to require that this knowledge
           to be configured at each node.

           *Partially Compliant*. Most DOIC parameters are advertised
           using the DOIC capability announcement mechanism.  However,
           there are some situations where configuration is required.
           For example, a DOIC node detect the fact that a peer may not
           support DOIC when nodes on the other side of the non-
           supporting node do support DOIC without configuration.



D.2.  Performance

   REQ 7:  The solution and any associated default algorithm(s) MUST
           ensure that the system remains stable.  At some point after
           an overload condition has ended, the solution MUST enable
           capacity to stabilize and become equal to what it would be in
           the absence of an overload condition.  Note that this also
           requires that the solution MUST allow nodes to shed load
           without introducing non-converging oscillations during or
           after an overload condition.

           *Compliant*. The specification offers guidance that
           implementations should apply hysteresis when recovering from
           overload, and avoid sudden ramp ups in offered load when
           recovering.



   REQ 8:  Supporting nodes MUST be able to distinguish current overload
           information from stale information.

           *Partially Compliant*. DOIC overload reports are "soft
           state", that is they expire after an indicated period.  DOIC
           nodes may also send reports that end existing overload
           conditions.  DOIC requires reporting nodes to ensure that all
           relevant reacting nodes receive overload reports.

           However, since DOIC does not allow reports to send OLRs in
           watchdog messages, if an overload condition results in zero
           offered load, the reporting node cannot update the condition
           until the expiration of the original OLR.



   REQ 9:  The solution MUST function across fully loaded as well as
           quiescent transport connections.  This is partially derived
           from the requirement for stability in REQ 7.

           *Not Compliant*. DOIC does not allow OLRs to be sent over
           quiescent transport connections.  This is due to the fact
           that OLRs cannot be sent outside of the application to which
           they apply.



   REQ 10: Consumers of overload information MUST be able to determine
           when the overload condition improves or ends.

           *Partially Compliant*. (See response to previous two
           requirements.)



   REQ 11: The solution MUST be able to operate in networks of different
           sizes.

           *Compliant*. DOIC makes no assumptions about the size of the
           network.  DOIC can operate purely between clients and
           servers, or across agents.



   REQ 12: When a single network node fails, goes into overload, or
           suffers from reduced processing capacity, the solution MUST
           make it possible to limit the impact of the affected node on
           other nodes in the network.  This helps to prevent a small-
           scale failure from becoming a widespread outage.

           *Partially Compliant*. DOIC allows overload reports for an
           entire realm, where abated traffic will not be redirected
           towards another server.  But in situations where nodes choose
           to divert traffic to other nodes, DOIC offers no way of
           knowing whether the new recipients can handle the traffic if
           they have not already indicated overload.  This may be
           mitigated with the use of a future "load" extension, or with
           the use of proprietary dynamic load-balancing mechanisms.



   REQ 13: The solution MUST NOT introduce substantial additional work
           for a node in an overloaded state.  For example, a
           requirement for an overloaded node to send overload
           information every time it received a new request would
           introduce substantial work.

           *Not Compliant*. DOIC does in fact encourage an overloaded
           node to send an OLR in every response.  The working group
           that other mechanisms to ensure that every relevant node
           receives an OLR would create even more work.  [Note: This
           needs discussion.]



   REQ 14: Some scenarios that result in overload involve a rapid
           increase of traffic with little time between normal levels
           and levels that induce overload.  The solution SHOULD provide
           for rapid feedback when traffic levels increase.

           *Compliant*. The piggyback mechanism allows OLRs to be sent
           at the same rate as application traffic.



   REQ 15: The solution MUST NOT interfere with the congestion control
           mechanisms of underlying transport protocols.  For example, a
           solution that opened additional TCP connections when the
           network is congested would reduce the effectiveness of the
           underlying congestion control mechanisms.

           *Compliant*. DOIC does not require or recommend changes in
           the handling of transport protocols or connections.



D.3.  Heterogeneous Support for Solution

   REQ 16: The solution is likely to be deployed incrementally.  The
           solution MUST support a mixed environment where some, but not
           all, nodes implement it.

           *Partially Compliant*. DOIC works with most mixed-deployment
           scenarios.  However, it cannot work across a non-supporting
           proxy that modifies Origin-Host AVPs in answer messages.
           DOIC will have limited impact in networks where the nodes
           that perform server selections do not support the mechanism.



   REQ 17: In a mixed environment with nodes that support the solution
           and nodes that do not, the solution MUST NOT result in
           materially less useful throughput during overload as would
           have resulted if the solution were not present.  It SHOULD
           result in less severe overload in this environment.

           *Compliant*. In most mixed-support deployment, DOIC will
           offer at least some value, and will not make things worse.



   REQ 18: In a mixed environment of nodes that support the solution and
           nodes that do not, the solution MUST NOT preclude elements
           that support overload control from treating elements that do
           not support overload control in an equitable fashion relative
           to those that do.  Users and operators of nodes that do not
           support the solution MUST NOT unfairly benefit from the
           solution.  The solution specification SHOULD provide guidance
           to implementors for dealing with elements not supporting
           overload control.

           *Compliant*. DOIC provides mechanisms to abate load from non-
           supporting sources.  Furthermore, it recommends that
           reporting nodes will still need to be able to apply whatever
           protections they would ordinarily apply if DOIC were not in
           use.



   REQ 19: It MUST be possible to use the solution between nodes in
           different realms and in different administrative domains.

           *Partially Compliant*. DOIC allows sending OLRs across
           administrative domains, and potentially to nodes in other
           realms.  However, an OLR cannot indicate overload for realms
           other than the one in the Origin-Realm AVP of the containing
           answer.



   REQ 20: Any explicit overload indication MUST be clearly
           distinguishable from other errors reported via Diameter.

           *Compliant*. DOIC sends explicit overload indication in
           overload reports.  It does not depend on error result codes.
           [Note: I don't think the resuse of too-busy and unable-to-
           comply for throttled requests impacts this requirement.  Do
           others agree?]



   REQ 21: In cases where a network node fails, is so overloaded that it
           cannot process messages, or cannot communicate due to a
           network failure, it may not be able to provide explicit
           indications of the nature of the failure or its levels of
           overload.  The solution MUST result in at least as much
           useful throughput as would have resulted if the solution were
           not in place.

           *Compliant*. DOIC overload reports have the primary effect of
           suppressing message retries in overload conditions.  DOIC
           recommends that messages never be silently dropped if at all
           possible.



D.4.  Granular Control

   REQ 22: The solution MUST provide a way for a node to throttle the
           amount of traffic it receives from a peer node.  This
           throttling SHOULD be graded so that it can be applied
           gradually as offered load increases.  Overload is not a
           binary state; there may be degrees of overload.

           *Compliant*. The "loss" algorithm expresses a percentage
           reduction.



   REQ 23: The solution MUST provide sufficient information to enable a
           load-balancing node to divert messages that are rejected or
           otherwise throttled by an overloaded upstream node to other
           upstream nodes that are the most likely to have sufficient
           capacity to process them.

           *Not Compliant*. DOIC provides no built in mechanism to
           determine the best place to divert messages that would
           otherwise be throttled.  This can be accomplished with a
           future "load" extension, or with proprietary load balancing
           mechanisms.



   REQ 24: The solution MUST provide a mechanism for indicating load
           levels, even when not in an overload condition, to assist
           nodes in making decisions to prevent overload conditions from
           occurring.

           *Not Compliant*. "Load" information has been left for a
           future extension.



D.5.  Priority and Policy

   REQ 25: The base specification for the solution SHOULD offer general
           guidance on which message types might be desirable to send or
           process over others during times of overload, based on
           application-specific considerations.  For example, it may be
           more beneficial to process messages for existing sessions
           ahead of new sessions.  Some networks may have a requirement
           to give priority to requests associated with emergency
           sessions.  Any normative or otherwise detailed definition of
           the relative priorities of message types during an overload
           condition will be the responsibility of the application
           specification.

           *Compliant*. The specification offers guidance on how
           requests might be prioritized for different types of
           applications.



   REQ 26: The solution MUST NOT prevent a node from prioritizing
           requests based on any local policy, so that certain requests
           are given preferential treatment, given additional
           retransmission, not throttled, or processed ahead of others.

           *Compliant*. Nothing in the specification prevents
           application-specific, implementation-specific, or local
           policies.



D.6.  Security

   REQ 27: The solution MUST NOT provide new vulnerabilities to
           malicious attack or increase the severity of any existing
           vulnerabilities.  This includes vulnerabilities to DoS and
           DDoS attacks as well as replay and man-in-the-middle attacks.
           Note that the Diameter base specification [RFC6733] lacks
           end-to-end security and this must be considered (see the
           Security Considerations in [RFC7068]).  Note that this
           requirement was expressed at a high level so as to not
           preclude any particular solution.  Is is expected that the
           solution will address this in more detail.

           *Unknown*. [Needs further analysis.]



   REQ 28: The solution MUST NOT depend on being deployed in
           environments where all Diameter nodes are completely trusted.
           It SHOULD operate as effectively as possible in environments
           where other nodes are malicious; this includes preventing
           malicious nodes from obtaining more than a fair share of
           service.  Note that this does not imply any responsibility on
           the solution to detect, or take countermeasures against,
           malicious nodes.

           *Partially Compliant*. Since all Diameter security is
           currently at the transport layer, nodes must trust immediate
           peers to enforce trust policies.  However, there are
           situations where a DOIC node cannot determine if an immediate
           peer supports DOIC.  The authors recommend an expert security
           review.



   REQ 29: It MUST be possible for a supporting node to make
           authorization decisions about what information will be sent
           to peer nodes based on the identity of those nodes.  This
           allows a domain administrator who considers the load of their
           nodes to be sensitive information to restrict access to that
           information.  Of course, in such cases, there is no
           expectation that the solution itself will help prevent
           overload from that peer node.

           *Partially Compliant*. (See response to previous
           requirement.)



   REQ 30: The solution MUST NOT interfere with any Diameter-compliant
           method that a node may use to protect itself from overload
           from non-supporting nodes or from denial-of-service attacks.

           *Compliant*. The specification recommends that any such
           protection mechanism needed without DOIC should continue to
           be employed with DOIC.



D.7.  Flexibility and Extensibility

   REQ 31: There are multiple situations where a Diameter node may be
           overloaded for some purposes but not others.  For example,
           this can happen to an agent or server that supports multiple
           applications, or when a server depends on multiple external
           resources, some of which may become overloaded while others
           are fully available.  The solution MUST allow Diameter nodes
           to indicate overload with sufficient granularity to allow
           clients to take action based on the overloaded resources
           without unreasonably forcing available capacity to go unused.
           The solution MUST support specification of overload
           information with granularities of at least "Diameter node",
           "realm", and "Diameter application" and MUST allow
           extensibility for others to be added in the future.

           *Partially Compliant*. All DOIC overload reports are scoped
           to the specific application and realm.  Inside that scope,
           overload can be reported at the specific server or whole
           realm scope.  As currently specified, DOIC cannot indicate
           local overload for an agent.  At the time of this writing,
           the DIME working group has plans to work on an agent-overload
           extension.

           DOIC allows new "scopes" through the use of extended report
           types.



   REQ 32: The solution MUST provide a method for extending the
           information communicated and the algorithms used for overload
           control.

           *Compliant*. DOIC allows new report types and abatement
           algorithms to be created.  These may be indicated using the
           OC-Supported-Features AVP.



   REQ 33: The solution MUST provide a default algorithm that is
           mandatory to implement.

           *Compliant*. The "loss" algorithm is mandatory to implement.



   REQ 34: The solution SHOULD provide a method for exchanging overload
           and load information between elements that are connected by
           intermediaries that do not support the solution.

           *Partially Compliant*. DOIC information can traverse non-
           supporting agents, as long as those agents do not modify
           certain AVPs. (e.g., Origin-Host)


--Apple-Mail=_9EFDF2A6-3419-457F-B098-42E53345FCC4
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D""><pre style=3D"word-wrap: break-word; white-space: pre-wrap;" =
class=3D"">Hi,</pre><pre style=3D"word-wrap: break-word; white-space: =
pre-wrap;" class=3D"">Benoit requested that the DOIC draft include a =
requirements analysis against the requirements from RFC 7068. I=E2=80=99ve=
 made an attempt that that, below.</pre><pre style=3D"word-wrap: =
break-word; white-space: pre-wrap;" class=3D"">I realize not everyone =
will agree on my analysis, and there is considerable room for =
discussion. However, given Benoit=E2=80=99s request, I think it=E2=80=99s =
important to get these in as soon as possible; if not in 04, then soon =
afterwards (i.e. before WGLC, and preferably before Honolulu.)</pre><pre =
style=3D"word-wrap: break-word; white-space: pre-wrap;" class=3D"">I =
also created a branch called =E2=80=9CReqs-Analysis" in the GitHub =
repository that contains  these in XML form.</pre><pre style=3D"word-wrap:=
 break-word; white-space: pre-wrap;" class=3D"">Thanks!</pre><pre =
style=3D"word-wrap: break-word; white-space: pre-wrap;" =
class=3D"">Ben.</pre><pre style=3D"word-wrap: break-word; white-space: =
pre-wrap;" =
class=3D"">----------------------------------------------</pre><pre =
style=3D"word-wrap: break-word; white-space: pre-wrap;" =
class=3D"">Appendix D.  Requirements Analysis

   This section analyzes the mechanism described in this document
   against the set of requirements detailed in [RFC7068].

D.1.  General

   REQ 1:  The solution MUST provide a communication method for Diameter
           nodes to exchange load and overload information.

           *Partially Compliant*. The mechanism uses new AVPs
           piggybacked on existing Diameter messages to exchange
           overload information.  It does not currently support "load"
           information.  Indication of "Load" information has been left
           for a future extension.



   REQ 2:  The solution MUST allow Diameter nodes to support overload
           control regardless of which Diameter applications they
           support.  Diameter clients and agents must be able to use the
           received load and overload information to support graceful
           behavior during an overload condition.  Graceful behavior
           under overload conditions is best described by REQ 3.

           *Compliant*. The DOIC AVPs can be used in any application
           that allows the extension of AVPs.



   REQ 3:  The solution MUST limit the impact of overload on the overall
           useful throughput of a Diameter server, even when the
           incoming load on the network is far in excess of its
           capacity.  The overall useful throughput under load is the
           ultimate measure of the value of a solution.

           *Compliant*. DOIC provides information that nodes can use to
           reduce the impact of overload.



   REQ 4:  Diameter allows requests to be sent from either side of a
           connection, and either side of a connection may have need to
           provide its overload status.  The solution MUST allow each
           side of a connection to independently inform the other of its
           overload status.

           *Compliant*. DOIC AVPs can be included regardless of
           transaction "direction"



   REQ 5:  Diameter allows nodes to determine their peers via dynamic
           discovery or manual configuration.  The solution MUST work
           consistently without regard to how peers are determined.

           *Compliant*. DOIC contains no assumptions about how peers are
           discovered.  [Note: This may require further study]



   REQ 6:  The solution designers SHOULD seek to minimize the amount of
           new configuration required in order to work.  For example, it
           is better to allow peers to advertise or negotiate support
           for the solution, rather than to require that this knowledge
           to be configured at each node.

           *Partially Compliant*. Most DOIC parameters are advertised
           using the DOIC capability announcement mechanism.  However,
           there are some situations where configuration is required.
           For example, a DOIC node detect the fact that a peer may not
           support DOIC when nodes on the other side of the non-
           supporting node do support DOIC without configuration.



D.2.  Performance

   REQ 7:  The solution and any associated default algorithm(s) MUST
           ensure that the system remains stable.  At some point after
           an overload condition has ended, the solution MUST enable
           capacity to stabilize and become equal to what it would be in
           the absence of an overload condition.  Note that this also
           requires that the solution MUST allow nodes to shed load
           without introducing non-converging oscillations during or
           after an overload condition.

           *Compliant*. The specification offers guidance that
           implementations should apply hysteresis when recovering from
           overload, and avoid sudden ramp ups in offered load when
           recovering.



   REQ 8:  Supporting nodes MUST be able to distinguish current overload
           information from stale information.

           *Partially Compliant*. DOIC overload reports are "soft
           state", that is they expire after an indicated period.  DOIC
           nodes may also send reports that end existing overload
           conditions.  DOIC requires reporting nodes to ensure that all
           relevant reacting nodes receive overload reports.

           However, since DOIC does not allow reports to send OLRs in
           watchdog messages, if an overload condition results in zero
           offered load, the reporting node cannot update the condition
           until the expiration of the original OLR.



   REQ 9:  The solution MUST function across fully loaded as well as
           quiescent transport connections.  This is partially derived
           from the requirement for stability in REQ 7.

           *Not Compliant*. DOIC does not allow OLRs to be sent over
           quiescent transport connections.  This is due to the fact
           that OLRs cannot be sent outside of the application to which
           they apply.



   REQ 10: Consumers of overload information MUST be able to determine
           when the overload condition improves or ends.

           *Partially Compliant*. (See response to previous two
           requirements.)



   REQ 11: The solution MUST be able to operate in networks of different
           sizes.

           *Compliant*. DOIC makes no assumptions about the size of the
           network.  DOIC can operate purely between clients and
           servers, or across agents.



   REQ 12: When a single network node fails, goes into overload, or
           suffers from reduced processing capacity, the solution MUST
           make it possible to limit the impact of the affected node on
           other nodes in the network.  This helps to prevent a small-
           scale failure from becoming a widespread outage.

           *Partially Compliant*. DOIC allows overload reports for an
           entire realm, where abated traffic will not be redirected
           towards another server.  But in situations where nodes choose
           to divert traffic to other nodes, DOIC offers no way of
           knowing whether the new recipients can handle the traffic if
           they have not already indicated overload.  This may be
           mitigated with the use of a future "load" extension, or with
           the use of proprietary dynamic load-balancing mechanisms.



   REQ 13: The solution MUST NOT introduce substantial additional work
           for a node in an overloaded state.  For example, a
           requirement for an overloaded node to send overload
           information every time it received a new request would
           introduce substantial work.

           *Not Compliant*. DOIC does in fact encourage an overloaded
           node to send an OLR in every response.  The working group
           that other mechanisms to ensure that every relevant node
           receives an OLR would create even more work.  [Note: This
           needs discussion.]



   REQ 14: Some scenarios that result in overload involve a rapid
           increase of traffic with little time between normal levels
           and levels that induce overload.  The solution SHOULD provide
           for rapid feedback when traffic levels increase.

           *Compliant*. The piggyback mechanism allows OLRs to be sent
           at the same rate as application traffic.



   REQ 15: The solution MUST NOT interfere with the congestion control
           mechanisms of underlying transport protocols.  For example, a
           solution that opened additional TCP connections when the
           network is congested would reduce the effectiveness of the
           underlying congestion control mechanisms.

           *Compliant*. DOIC does not require or recommend changes in
           the handling of transport protocols or connections.



D.3.  Heterogeneous Support for Solution

   REQ 16: The solution is likely to be deployed incrementally.  The
           solution MUST support a mixed environment where some, but not
           all, nodes implement it.

           *Partially Compliant*. DOIC works with most mixed-deployment
           scenarios.  However, it cannot work across a non-supporting
           proxy that modifies Origin-Host AVPs in answer messages.
           DOIC will have limited impact in networks where the nodes
           that perform server selections do not support the mechanism.



   REQ 17: In a mixed environment with nodes that support the solution
           and nodes that do not, the solution MUST NOT result in
           materially less useful throughput during overload as would
           have resulted if the solution were not present.  It SHOULD
           result in less severe overload in this environment.

           *Compliant*. In most mixed-support deployment, DOIC will
           offer at least some value, and will not make things worse.



   REQ 18: In a mixed environment of nodes that support the solution and
           nodes that do not, the solution MUST NOT preclude elements
           that support overload control from treating elements that do
           not support overload control in an equitable fashion relative
           to those that do.  Users and operators of nodes that do not
           support the solution MUST NOT unfairly benefit from the
           solution.  The solution specification SHOULD provide guidance
           to implementors for dealing with elements not supporting
           overload control.

           *Compliant*. DOIC provides mechanisms to abate load from non-
           supporting sources.  Furthermore, it recommends that
           reporting nodes will still need to be able to apply whatever
           protections they would ordinarily apply if DOIC were not in
           use.



   REQ 19: It MUST be possible to use the solution between nodes in
           different realms and in different administrative domains.

           *Partially Compliant*. DOIC allows sending OLRs across
           administrative domains, and potentially to nodes in other
           realms.  However, an OLR cannot indicate overload for realms
           other than the one in the Origin-Realm AVP of the containing
           answer.



   REQ 20: Any explicit overload indication MUST be clearly
           distinguishable from other errors reported via Diameter.

           *Compliant*. DOIC sends explicit overload indication in
           overload reports.  It does not depend on error result codes.
           [Note: I don't think the resuse of too-busy and unable-to-
           comply for throttled requests impacts this requirement.  Do
           others agree?]



   REQ 21: In cases where a network node fails, is so overloaded that it
           cannot process messages, or cannot communicate due to a
           network failure, it may not be able to provide explicit
           indications of the nature of the failure or its levels of
           overload.  The solution MUST result in at least as much
           useful throughput as would have resulted if the solution were
           not in place.

           *Compliant*. DOIC overload reports have the primary effect of
           suppressing message retries in overload conditions.  DOIC
           recommends that messages never be silently dropped if at all
           possible.



D.4.  Granular Control

   REQ 22: The solution MUST provide a way for a node to throttle the
           amount of traffic it receives from a peer node.  This
           throttling SHOULD be graded so that it can be applied
           gradually as offered load increases.  Overload is not a
           binary state; there may be degrees of overload.

           *Compliant*. The "loss" algorithm expresses a percentage
           reduction.



   REQ 23: The solution MUST provide sufficient information to enable a
           load-balancing node to divert messages that are rejected or
           otherwise throttled by an overloaded upstream node to other
           upstream nodes that are the most likely to have sufficient
           capacity to process them.

           *Not Compliant*. DOIC provides no built in mechanism to
           determine the best place to divert messages that would
           otherwise be throttled.  This can be accomplished with a
           future "load" extension, or with proprietary load balancing
           mechanisms.



   REQ 24: The solution MUST provide a mechanism for indicating load
           levels, even when not in an overload condition, to assist
           nodes in making decisions to prevent overload conditions from
           occurring.

           *Not Compliant*. "Load" information has been left for a
           future extension.



D.5.  Priority and Policy

   REQ 25: The base specification for the solution SHOULD offer general
           guidance on which message types might be desirable to send or
           process over others during times of overload, based on
           application-specific considerations.  For example, it may be
           more beneficial to process messages for existing sessions
           ahead of new sessions.  Some networks may have a requirement
           to give priority to requests associated with emergency
           sessions.  Any normative or otherwise detailed definition of
           the relative priorities of message types during an overload
           condition will be the responsibility of the application
           specification.

           *Compliant*. The specification offers guidance on how
           requests might be prioritized for different types of
           applications.



   REQ 26: The solution MUST NOT prevent a node from prioritizing
           requests based on any local policy, so that certain requests
           are given preferential treatment, given additional
           retransmission, not throttled, or processed ahead of others.

           *Compliant*. Nothing in the specification prevents
           application-specific, implementation-specific, or local
           policies.



D.6.  Security

   REQ 27: The solution MUST NOT provide new vulnerabilities to
           malicious attack or increase the severity of any existing
           vulnerabilities.  This includes vulnerabilities to DoS and
           DDoS attacks as well as replay and man-in-the-middle attacks.
           Note that the Diameter base specification [RFC6733] lacks
           end-to-end security and this must be considered (see the
           Security Considerations in [RFC7068]).  Note that this
           requirement was expressed at a high level so as to not
           preclude any particular solution.  Is is expected that the
           solution will address this in more detail.

           *Unknown*. [Needs further analysis.]



   REQ 28: The solution MUST NOT depend on being deployed in
           environments where all Diameter nodes are completely trusted.
           It SHOULD operate as effectively as possible in environments
           where other nodes are malicious; this includes preventing
           malicious nodes from obtaining more than a fair share of
           service.  Note that this does not imply any responsibility on
           the solution to detect, or take countermeasures against,
           malicious nodes.

           *Partially Compliant*. Since all Diameter security is
           currently at the transport layer, nodes must trust immediate
           peers to enforce trust policies.  However, there are
           situations where a DOIC node cannot determine if an immediate
           peer supports DOIC.  The authors recommend an expert security
           review.



   REQ 29: It MUST be possible for a supporting node to make
           authorization decisions about what information will be sent
           to peer nodes based on the identity of those nodes.  This
           allows a domain administrator who considers the load of their
           nodes to be sensitive information to restrict access to that
           information.  Of course, in such cases, there is no
           expectation that the solution itself will help prevent
           overload from that peer node.

           *Partially Compliant*. (See response to previous
           requirement.)



   REQ 30: The solution MUST NOT interfere with any Diameter-compliant
           method that a node may use to protect itself from overload
           from non-supporting nodes or from denial-of-service attacks.

           *Compliant*. The specification recommends that any such
           protection mechanism needed without DOIC should continue to
           be employed with DOIC.



D.7.  Flexibility and Extensibility

   REQ 31: There are multiple situations where a Diameter node may be
           overloaded for some purposes but not others.  For example,
           this can happen to an agent or server that supports multiple
           applications, or when a server depends on multiple external
           resources, some of which may become overloaded while others
           are fully available.  The solution MUST allow Diameter nodes
           to indicate overload with sufficient granularity to allow
           clients to take action based on the overloaded resources
           without unreasonably forcing available capacity to go unused.
           The solution MUST support specification of overload
           information with granularities of at least "Diameter node",
           "realm", and "Diameter application" and MUST allow
           extensibility for others to be added in the future.

           *Partially Compliant*. All DOIC overload reports are scoped
           to the specific application and realm.  Inside that scope,
           overload can be reported at the specific server or whole
           realm scope.  As currently specified, DOIC cannot indicate
           local overload for an agent.  At the time of this writing,
           the DIME working group has plans to work on an agent-overload
           extension.

           DOIC allows new "scopes" through the use of extended report
           types.



   REQ 32: The solution MUST provide a method for extending the
           information communicated and the algorithms used for overload
           control.

           *Compliant*. DOIC allows new report types and abatement
           algorithms to be created.  These may be indicated using the
           OC-Supported-Features AVP.



   REQ 33: The solution MUST provide a default algorithm that is
           mandatory to implement.

           *Compliant*. The "loss" algorithm is mandatory to implement.



   REQ 34: The solution SHOULD provide a method for exchanging overload
           and load information between elements that are connected by
           intermediaries that do not support the solution.

           *Partially Compliant*. DOIC information can traverse non-
           supporting agents, as long as those agents do not modify
           certain AVPs. (e.g., Origin-Host)
</pre><div class=3D""><br class=3D""></div></body></html>=

--Apple-Mail=_9EFDF2A6-3419-457F-B098-42E53345FCC4--


From nobody Tue Oct 21 21:52:41 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 21FDA1A8A8D for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:52:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GzhrvdcCg-F6 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:52:38 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9A0711A8A9F for <dime@ietf.org>; Tue, 21 Oct 2014 21:52:38 -0700 (PDT)
Received: from localhost ([::1]:37069 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgnuR-00044B-RG; Tue, 21 Oct 2014 21:52:31 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 04:52:31 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/75#comment:2
Message-ID: <081.07718243e39f1dc00699b63e4033781d@trac.tools.ietf.org>
References: <066.165d20d0969f53f2e18f5a88f737e2d5@trac.tools.ietf.org>
X-Trac-Ticket-ID: 75
In-Reply-To: <066.165d20d0969f53f2e18f5a88f737e2d5@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/9znM6C4nHuzLHxuyfV1GNO7il94
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #75 (draft-ietf-dime-ovli): Proposed changes to Terminology section
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 04:52:40 -0000

#75: Proposed changes to Terminology section

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/75#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 21:55:14 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EE23D1A8AAA for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:55:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cdy9uIxymRly for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:55:10 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E238D1A8A9D for <dime@ietf.org>; Tue, 21 Oct 2014 21:55:10 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53907 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xgnwr-0001zA-PU; Tue, 21 Oct 2014 21:55:06 -0700
Message-ID: <544738A5.7090608@usdonovans.com>
Date: Wed, 22 Oct 2014 06:55:01 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com>
In-Reply-To: <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/2a6-2BCo3ksTkI00xtU9HxQEicw
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 04:55:13 -0000

It wasn't clear to me when that would be used.  We can certainly update 
the text if someone has an agreeable suggestion for what that text 
should be.

In the mean time, I'm going to close the issue and leave this question 
to be resolved during review of the updates.

Regards,

Steve

On 10/21/14, 4:46 PM, Ben Campbell wrote:
> Did we intend to include anything about Lionel's suggestion on UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make sure we didn't forget to consider it.)
>
> I also have one comment inline. Otherwise it looks good to me.
>
>
>> On Oct 21, 2014, at 3:27 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>
>> I have incorporated the following text into the document in the existing, previously empty, section 7. Error Response Codes.
>>
>> I will wait until tomorrow to close issue 85 to allow for discussion of the proposed wording.
>>
>> I have attached the diff as this wording is not in the draft.
>>
>> Regards,
>>
>> Steve
>>
>> ---
>>
>>     When a DOIC node rejects a Diameter request due to throttling, the
>>     DOIC node needs to select the appropriate error response code.
> Do we have separate text saying the node MUST send an error? If not, I suggest changing this to "... MUST respond with an appropriate error response code."
>
> The change from "the" to "an" was intentional. Since we are using SHOULD below for the actual choice, I assume we intend to leave room for an implementation to make other choices if it has a good reason.
>
>
>>   This
>>     determination is made based on the probability of the request
>>     succeeding if retried on a different path.
>>
>>     The DIAMETER_TOO_BUSY response code SHOULD be used when the request
>>     is likely to succeed on a different path.
>>
>>        For instance, if the request arrived at the reporting node without
>>        a Destination-Host AVP then the reporting node might determine
>>        that there is an alternative Diameter node that could successfully
>>        process the request and that retrying the transaction would not
>>        negatively impact the reporting node.
>>
>>     The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>     indicate that the request should not be retried.  This is used when
>>     the request is not likely to succeed on a different path and retrying
>>     would consume valuable resources during an occurance of overload.
>>
>>        For instance, if the request arrived at the reporting node with a
>>        Destination-Host AVP populated with its own Diameter identity then
>>        the reporting node can assume that retrying the request would
>>        result in it coming to the same reporting node.
>>
>>        A second example is when an agent that supports the DOIC solution
>>        is preforming the role of a reacting node for a non supporting
>>        client.  Requests that are rejected as a result of DOIC throttling
>>        in this scenario would generally be rejected with a
>>        DIAMETER_UNABLE_TO_COMPLY response code.
>>
>>
>>
>>
>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>> I agree.
>>>
>>> Lionel
>>>
>>> Envoyé depuis mon Sony Xperia SP d'Orange
>>>
>>> ---- Ben Campbell a écrit ----
>>>
>>>
>>>
>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> <lionel.morand@orange.com>
>>>>   wrote:
>>>>
>>>> Hi,
>>>>
>>>> I think that:
>>>> - TOO_BUSY should be restricted to server answer
>>>>
>>> One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.
>>>
>>>
>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission is required
>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.
>>>>
>>>> As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.
>>>>
>>>> Regards,
>>>>
>>>> Lionel
>>>>
>>>> -----Message d'origine-----
>>>> De : DiME [
>>>> mailto:dime-bounces@ietf.org
>>>> ] De la part de Ben Campbell
>>>> Envoyé : lundi 20 octobre 2014 19:10
>>>> À : Steve Donovan
>>>> Cc :
>>>> dime@ietf.org
>>>>
>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>
>>>> I agree that we should generalize these, but I think the direction is not quite right. More inline:
>>>>
>>>>
>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com>
>>>>>   wrote:
>>>>>
>>>>> We came to the following agreements on error responses:
>>>>>
>>>>> - Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>
>>>>> - Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>
>>>>> I propose that we generalize this to the following:
>>>>>
>>>>> - Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>
>>>>> - Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
>>>>>
>>>> I don't think we should state this in terms of reaction and reporting nodes. I think we should generalize to expected behavior. Also, in the case where the downstream node does not support DOIC, I'm not sure it makes sense to say the throttling node is really a reporting node (for that particular relationship.)
>>>>
>>>> My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)
>>>>
>>>> Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.
>>>>
>>>>
>>>>
>>>>> This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>>>
>>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.
>>>>>
>>>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>>>
>>>>> Regards,
>>>>>
>>>>> Steve
>>>>>
>>>>> _______________________________________________
>>>>> DiME mailing list
>>>>>
>>>>> DiME@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>> _______________________________________________
>>>> DiME mailing list
>>>>
>>>> DiME@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>
>>>>
>>>> _________________________________________________________________________________________________________________________
>>>>
>>>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>>>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>>
>>>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>>>> they should not be distributed, used or copied without authorisation.
>>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>>> Thank you.
>>>>
>>>>
>>> _________________________________________________________________________________________________________________________
>>>
>>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>
>>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>>> they should not be distributed, used or copied without authorisation.
>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>> Thank you.
>>>
>>>
>>>
>> <Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html>
>


From nobody Tue Oct 21 21:55:39 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5777D1A8A9D for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:55:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sjZonSUYZRDx for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 21:55:29 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E947C1A8AAA for <dime@ietf.org>; Tue, 21 Oct 2014 21:55:28 -0700 (PDT)
Received: from localhost ([::1]:37169 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgnxG-0004cr-90; Tue, 21 Oct 2014 21:55:26 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 04:55:26 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:3
Message-ID: <081.f3d1608b49ea6f5903c812a8c1a06f56@trac.tools.ietf.org>
References: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-Trac-Ticket-ID: 85
In-Reply-To: <066.8ce734c1c66c770a886774c6bf72f7be@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/st3TmW7MgdqutRsEF1zW4-E0kqM
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #85 (draft-ietf-dime-ovli): New error response
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 04:55:34 -0000

#85: New error response

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/85#comment:3>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:14:26 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0F8801A8AB2 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:14:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aEdHgzupfC5D for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:14:10 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CE1FF1A8AB1 for <dime@ietf.org>; Tue, 21 Oct 2014 22:14:10 -0700 (PDT)
Received: from localhost ([::1]:38165 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoFL-00063b-BZ; Tue, 21 Oct 2014 22:14:07 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:14:07 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/69#comment:1
Message-ID: <090.16cf468c04859cecb89fbc6961f85480@trac.tools.ietf.org>
References: <075.41a258960641a985e7e7d8a618123b41@trac.tools.ietf.org>
X-Trac-Ticket-ID: 69
In-Reply-To: <075.41a258960641a985e7e7d8a618123b41@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/tu2FPd0s9i5wSzhRwpmWaJfwL9I
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #69 (draft-ietf-dime-ovli): Report Type - Realm, with absent Destination-Host
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:14:21 -0000

#69: Report Type - Realm, with absent Destination-Host

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 Added the following wording resulting from discussions at the interim
 meeting:

 When a reporting node sends an OLR, it effectively delegates any necessary
 throttling to downstream nodes. Therefore, the reporting node SHOULD NOT
 apply throttling to the set of messages to which the OLR applies. That is,
 the same candidate set of messages SHOULD NOT be throttled multiple times.



 However, when the reporting node sends and OLR downstream, it MAY still be
 responsible to apply other abatement methods, such as diversion, or
 request throttling requests for other reasons. For example, an agent or
 server might have a configured rate limit for each client, and throttle
 requests that exceed that limit, even if such requests had already been
 candidates for throttling by downstream nodes.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  maria.cruz.bartolome@ericsson.com  |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  minor                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/69#comment:1>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:16:43 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 035BC1A8AB3 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:16:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id I0rOVWCMvu91 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:16:39 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 699CD1A8AB1 for <dime@ietf.org>; Tue, 21 Oct 2014 22:16:39 -0700 (PDT)
Received: from localhost ([::1]:38291 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoHl-00054x-3P; Tue, 21 Oct 2014 22:16:37 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:16:37 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/27#comment:4
Message-ID: <081.03b27dad4ba0732051ec323e4d6c389e@trac.tools.ietf.org>
References: <066.f61ef866d851ac5c96a3d95ef727dae3@trac.tools.ietf.org>
X-Trac-Ticket-ID: 27
In-Reply-To: <066.f61ef866d851ac5c96a3d95ef727dae3@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/pQgK71fnBch3JJLylwLMgMFu6SU
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #27 (draft-ietf-dime-ovli): Behavior of agent acting on behalf of Client that does not support DOIC
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:16:41 -0000

#27: Behavior of agent acting on behalf of Client that does not support DOIC


Comment (by srdonovan@usdonovans.com):

 Depended on error response section being finished.  With that finished
 this ticket can be closed.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-docdt-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  reopened
 Priority:  critical                 |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Submitted WG Document    |  Resolution:
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/27#comment:4>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:16:55 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 72F3E1A8AB9 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:16:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jN9qlPFAOC_E for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:16:47 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 66B801A8AB6 for <dime@ietf.org>; Tue, 21 Oct 2014 22:16:47 -0700 (PDT)
Received: from localhost ([::1]:38310 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoHt-0005rL-Kh; Tue, 21 Oct 2014 22:16:45 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:16:45 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/27#comment:5
Message-ID: <081.8af1c12bc878722afd48078c2178fffc@trac.tools.ietf.org>
References: <066.f61ef866d851ac5c96a3d95ef727dae3@trac.tools.ietf.org>
X-Trac-Ticket-ID: 27
In-Reply-To: <066.f61ef866d851ac5c96a3d95ef727dae3@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-docdt-dime-ovli@tools.ietf.org, srdonovan@usdonovans.com, jouni.nospam@gmail.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/ELh0N8Ty34aM6q_8DWgoMW9g1uA
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #27 (draft-ietf-dime-ovli): Behavior of agent acting on behalf of Client that does not support DOIC
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:16:52 -0000

#27: Behavior of agent acting on behalf of Client that does not support DOIC

Changes (by srdonovan@usdonovans.com):

 * status:  reopened => closed
 * resolution:   => fixed


-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-docdt-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  critical                 |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Submitted WG Document    |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/27#comment:5>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:17:47 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 564981A8AB3 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:17:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id czbrCgq4rbYG for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:17:45 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3BA9F1A8AB1 for <dime@ietf.org>; Tue, 21 Oct 2014 22:17:45 -0700 (PDT)
Received: from localhost ([::1]:38875 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoIo-0002lf-Ec; Tue, 21 Oct 2014 22:17:42 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:17:42 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/25#comment:2
Message-ID: <081.fe541f93c4bf71c55309d3075abd8925@trac.tools.ietf.org>
References: <066.bb0f61f3d4c3a1f543554c66031a4edd@trac.tools.ietf.org>
X-Trac-Ticket-ID: 25
In-Reply-To: <066.bb0f61f3d4c3a1f543554c66031a4edd@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/gO2mGqupJL7kBYIs8wiiL7wYenE
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #25 (draft-ietf-dime-ovli): Section 3.1.5 Diameter Agent Behavior
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:17:46 -0000

#25: Section 3.1.5 Diameter Agent Behavior

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 All dependencies have been addressed and as such the ticket can be closed.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:
Component:  draft-ietf-dime-ovli     |     Version:
 Severity:  Submitted WG Document    |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/25#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:18:31 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9233E1A8ABB for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:18:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CACrmauW0P8d for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:18:26 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3FA201A8AB3 for <dime@ietf.org>; Tue, 21 Oct 2014 22:18:26 -0700 (PDT)
Received: from localhost ([::1]:38981 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoJT-0006MU-Ue; Tue, 21 Oct 2014 22:18:23 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:18:23 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/23#comment:2
Message-ID: <081.ca21e61f33b5706b7bb69fae3b643b05@trac.tools.ietf.org>
References: <066.bc8b33b812f849d70cc96ca6c7f6d77d@trac.tools.ietf.org>
X-Trac-Ticket-ID: 23
In-Reply-To: <066.bc8b33b812f849d70cc96ca6c7f6d77d@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-ietf-dime-ovli@tools.ietf.org, jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, lionel.morand@orange.com,  srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/QG6nr9BPv6tAfz-spZLoRN-wFwY
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #23 (draft-ietf-dime-ovli): DOIC behavior for realm overload
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:18:27 -0000

#23: DOIC behavior for realm overload

Changes (by srdonovan@usdonovans.com):

 * status:  new => closed
 * resolution:   => fixed


Comment:

 With the resolution to issue 69 this ticket can be closed.

-- 
-------------------------------------+-------------------------------------
 Reporter:                           |       Owner:  draft-ietf-dime-
  srdonovan@usdonovans.com           |  ovli@tools.ietf.org
     Type:  defect                   |      Status:  closed
 Priority:  major                    |   Milestone:  milestone1
Component:  draft-ietf-dime-ovli     |     Version:  1.0
 Severity:  Active WG Document       |  Resolution:  fixed
 Keywords:                           |
-------------------------------------+-------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/23#comment:2>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:19:26 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B75DE1A8AC0 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:19:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0cQE5dIKvmtJ for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:19:23 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 30C951A8AB1 for <dime@ietf.org>; Tue, 21 Oct 2014 22:19:23 -0700 (PDT)
Received: from localhost ([::1]:39058 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XgoKQ-0002zC-17; Tue, 21 Oct 2014 22:19:22 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: jouni.nospam@gmail.com, srdonovan@usdonovans.com
X-Trac-Project: dime
Date: Wed, 22 Oct 2014 05:19:22 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/58#comment:3
Message-ID: <077.88bb2c0e97c1ae5bb5f0db6ccc815e1e@trac.tools.ietf.org>
References: <062.600cb97f5aa115891e91baed3f682f01@trac.tools.ietf.org>
X-Trac-Ticket-ID: 58
In-Reply-To: <062.600cb97f5aa115891e91baed3f682f01@trac.tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: jouni.nospam@gmail.com, srdonovan@usdonovans.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/okmaFs6ovEakk5DLFto3GzWDSI8
Cc: dime@ietf.org
Subject: Re: [Dime] [dime] #58 (draft-ietf-dime-ovli): Multiple Reporting Nodes for realm-routed-request type reports
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:19:25 -0000

#58: Multiple Reporting Nodes for realm-routed-request type reports

Changes (by srdonovan@usdonovans.com):

 * status:  closed => reopened
 * resolution:  fixed =>


Comment:

 Consensus has not been reached on the proposed changes so the ticket is
 being reopened.

-- 
----------------------------------+---------------------------
 Reporter:  ulrich.wiehe@nsn.com  |       Owner:  Ulrich Wiehe
     Type:  defect                |      Status:  reopened
 Priority:  major                 |   Milestone:
Component:  draft-ietf-dime-ovli  |     Version:  1.0
 Severity:  Active WG Document    |  Resolution:
 Keywords:                        |
----------------------------------+---------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/58#comment:3>
dime <http://tools.ietf.org/wg/dime/>


From nobody Tue Oct 21 22:31:23 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6815D1A8AC6 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:31:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.179
X-Spam-Level: **
X-Spam-Status: No, score=2.179 tagged_above=-999 required=5 tests=[BAYES_50=0.8, J_CHICKENPOX_24=0.6, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id d74znVMtkkpl for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:31:10 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BAA9C1A8ABE for <dime@ietf.org>; Tue, 21 Oct 2014 22:31:10 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54074 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgoVi-0002be-N2 for dime@ietf.org; Tue, 21 Oct 2014 22:31:08 -0700
Message-ID: <54474116.5040700@usdonovans.com>
Date: Wed, 22 Oct 2014 07:31:02 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------030209050001040106090500"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/ekxoAzBc5WzbOFJRh74K9QC74C8
Subject: [Dime] Status of -04 draft
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:31:22 -0000

This is a multi-part message in MIME format.
--------------030209050001040106090500
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

All,

We briefly had all of the issues closed.  Then I re-opened issue 58 as 
we have not yet reached consensus on that issue.

So, we have one issue open.  If we can come to consensus on wording for 
that issue very quickly then it will be part of -04.  If we can't come 
to consensus by Friday or Saturday then it will need to be left for an 
extension.

I have attached the latest snapshot of the .txt file.

The following steps remain:

- End-to-end review of draft to remove redundant statements.
- Update based on comments received from Benoit, Jouni and Maria Cruz.
- General editorial updates.
- Continued review by the working group.

As a reminder, the document submission deadline is Monday.  Anyone who 
wants review comments reflected in -04 should post them on the list no 
later than Saturday.

Regards,

Steve


--------------030209050001040106090500
Content-Type: text/plain; charset=UTF-8;
 name="draft-ietf-dime-ovli-04.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="draft-ietf-dime-ovli-04.txt"





Diameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.
Internet-Draft                                                  Broadcom
Intended status: Standards Track                         S. Donovan, Ed.
Expires: April 24, 2015                                      B. Campbell
                                                                  Oracle
                                                               L. Morand
                                                             Orange Labs
                                                        October 21, 2014


                Diameter Overload Indication Conveyance
                      draft-ietf-dime-ovli-04.txt

Abstract

   This specification documents a Diameter Overload Control (DOC) base
   solution and the dissemination of the overload report information.

Requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 24, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents



Korhonen, et al.         Expires April 24, 2015                 [Page 1]

Internet-Draft                    DOIC                      October 2014


   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3
   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5
     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7
     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7
     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9
     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10
     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11
   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11
     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12
       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12
       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12
     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13
       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13
       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16
       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17
     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19
   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20
     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20
     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21
     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22
   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23
     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23
     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23
     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24
     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24
     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25
     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25
     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26
     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27
   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28
     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28
     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28
     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29
     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30
     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30



Korhonen, et al.         Expires April 24, 2015                 [Page 2]

Internet-Draft                    DOIC                      October 2014


     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31
   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32
     11.2.  Informative References . . . . . . . . . . . . . . . . .  32
   Appendix A.  Issues left for future specifications  . . . . . . .  33
     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33
     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33
     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33
   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33
   Appendix C.  Considerations for Applications Integrating the DOIC
                Solution . . . . . . . . . . . . . . . . . . . . . .  34
     C.1.  Application Classification  . . . . . . . . . . . . . . .  34
     C.2.  Application Type Overload Implications  . . . . . . . . .  35
     C.3.  Request Transaction Classification  . . . . . . . . . . .  36
     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38

1.  Introduction

   This specification defines a base solution for Diameter Overload
   Control (DOC), refered to as Diameter Overload Indication Conveyance
   (DOIC).  The requirements for the solution are described and
   discussed in the corresponding design requirements document
   [RFC7068].  Note that the overload control solution defined in this
   specification does not address all the requirements listed in
   [RFC7068].  A number of overload control related features are left
   for the future specifications.

   The solution defined in this specification addresses Diameter
   overload control between Diameter nodes that support the DOIC
   solution.  Furthermore, the solution is designed to apply to existing
   and future Diameter applications, requires no changes to the Diameter
   base protocol [RFC6733] and is deployable in environments where some
   Diameter nodes do not implement the Diameter overload control
   solution defined in this specification.

2.  Terminology and Abbreviations

   Abatement

      Reaction to receipt of an overload report resulting in a reduction
      in traffic sent to the reporting node.  Abatement actions include
      diversion and throttling.

   Abatement Algorithm





Korhonen, et al.         Expires April 24, 2015                 [Page 3]

Internet-Draft                    DOIC                      October 2014


      An algorithm requested by reporting nodes and used by reacting
      nodes to reduce the amount of traffic sent during an occurrence of
      overload control.

   Diversion

      Abatement of traffic sent to a reporting node by a reacting node
      in response to receipt of an overload report.  The abatement is
      achieved by diverting traffic from the reporting node to another
      Diameter node that is able to process the request.

   Host-Routed Request

      The set of requests that a reacting node knows will be served by a
      particular host, either due to the presence of a Destination-Host
      AVP, or by some other local knowledge on the part of the reacting
      node.

   Overload Control State (OCS)

      State describing an occurrence of overload control maintained by
      reporting and reacting nodes.

   Overload Report (OLR)

      A set of AVPs sent by a reporting node indicating the start or
      continuation of an occurrence of overload control.

   Reacting Node

      A Diameter node that consumes and acts upon a report.

   Realm-Routed Request

      The set of requests that a reacting node does not know the host
      that will service the request.

   Reporting Node

      A Diameter node that generates an overload report.  (This may or
      may not be the overloaded node.)

   Throttling

      Throttling is the reduction of the number of requests sent to an
      entity.  Throttling can include a client dropping requests, or an
      agent rejecting requests with appropriate error responses.  In
      extreme cases servers can also throttle requests when requested



Korhonen, et al.         Expires April 24, 2015                 [Page 4]

Internet-Draft                    DOIC                      October 2014


      reductions in traffic does not sufficiently address the overload
      scenario.



3.  Solution Overview

   The Diameter Overload Information Conveyance (DOIC) mechanism allows
   Diameter nodes to request other nodes to perform overload abatement
   actions, that is, actions to reduce the load offered to the
   overloaded node or realm.

   A Diameter node that supports DOIC is known as a "DOIC node".  Any
   Diameter node can act as a DOIC node, including clients, servers, and
   agents.  DOIC nodes are further divided into "Reporting Nodes" and
   "Reacting Nodes."  A reporting node requests overload abatement by
   sending an Overload Report (OLR) to one or more reacting nodes.

   A reacting node consumes OLRs, and performs whatever actions are
   needed to fulfill the abatement requests included in the OLRs.  A
   Reporting node may report overload on its own behalf, or on behalf of
   other (typically upstream) nodes.  Likewise, a reacting node may
   perform overload abatement on its own behalf, or on behalf of other
   (typically downstream) nodes.

   A node's role as a DOIC node is independent of its Diameter role.
   For example, Diameter relay and proxy agents may act as DOIC nodes,
   even though they are not endpoints in the Diameter sense.  Since
   Diameter enables bi-directional applications, where Diameter servers
   can send requests towards Diameter clients, a given Diameter node can
   simultaneously act as a reporting node and a reacting node.

   Likewise, a relay or proxy agent may act as a reacting node from the
   perspective of upstream nodes, and a reporting node from the
   perspective of downstream nodes.

   DOIC nodes do not generate new messages to carry DOIC related
   information.  Rather, they "piggyback" DOIC information over existing
   Diameter messages by inserting new AVPs into existing Diameter
   requests and responses.  Nodes indicate support for DOIC, and any
   needed DOIC parameters by inserting an OC_Supported_Features AVP
   (Section 6.2) into existing requests and responses.  Reporting nodes
   send OLRs by inserting OC-OLR AVPs (Section 6.3).

   A given OLR applies to the Diameter realm and application of the
   Diameter message that carries it.  If a reporting node supports more
   than one realm and/or application, it reports independently for each
   combination of realm and application.  Similarly, OC-Feature-Vector



Korhonen, et al.         Expires April 24, 2015                 [Page 5]

Internet-Draft                    DOIC                      October 2014


   AVPs apply to the realm and application of the enclosing message.
   This implies that a node may support DOIC for one application and/or
   realm, but not another, and may indicate different DOIC parameters
   for each application and realm for which it supports DOIC.

   Reacting nodes perform overload abatement according to an agreed-upon
   abatement algorithm.  An abatement algorithm defines the meaning of
   the parameters of an OLR, and the procedures required for overload
   abatement.  This document specifies a single must-support algorithm,
   namely the "loss" algorithm Section 5).  Future specifications may
   introduce new algorithms.

   Overload conditions may vary in scope.  For example, a single
   Diameter node may be overloaded, in which case reacting nodes may
   reasonably attempt to send throttled requests to other destinations
   or via other agents.  On the other hand, an entire Diameter realm may
   be overloaded, in which case such attempts would do harm.  DOIC OLRs
   have a concept of "report type" (Section 6.6), where the type defines
   such behaviors.  Report types are extensible.  This document defines
   report types for overload of a specific server, and for overload of
   an entire realm.

   A report of type host is sent to indicate the overload of a specific
   server for the application-id indicated in the transaction.  When
   receiving an OLR of type host, a reacting node applies overload
   abatement to what is referred to in this document as host-routed
   requests.  This is the set of requests that the reacting node knows
   will be served by a particular host, either due to the presence of a
   Destination-Host AVP, or by some other local knowledge on the part of
   the reacting node.  The reacting node applies overload abatement on
   those host-routed requests which the reacting node knows will be
   served by the server that matches the Origin-Host AVP of the received
   message that contained the received OLR of type host.

   A report type of realm is sent to indicate the overload of all
   servers in a realm for the application-id.  When receiving an OLR of
   type realm, a reacting node applies overload abatement to what is
   referred to in this document as realm-routed requests.  This is the
   set of requests that are not host-routed as defined in the previous
   paragraph.

   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes
   that are "adjacent" for DOIC purposes may not be adjacent from a
   Diameter, or transport, perspective.  For example, one or more
   Diameter agents that do not support DOIC may exist between a given
   pair of reporting and reacting nodes, as long as those agents pass
   unknown AVPs through unmolested.  The report types described in this
   document can safely pass through non-supporting agents.  This may not



Korhonen, et al.         Expires April 24, 2015                 [Page 6]

Internet-Draft                    DOIC                      October 2014


   be true for report types defined in future specifications.  Documents
   that introduce new report types MUST describe any limitations on
   their use across non-supporting agents.

3.1.  Piggybacking Principle

   The overload control AVPs defined in this specification have been
   designed to be piggybacked on top of existing application message
   exchanges.  This is made possible by adding overload control top
   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as
   optional AVPs into existing commands when the corresponding Command
   Code Format (CCF) specification allows adding new optional AVPs (see
   Section 1.3.4 of [RFC6733]).

   Reacting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP all request messages originated or relayed by
   the Diameter node.

   Reporting nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in all answer messages originated or relayed
   by the Diameter node.  Reporting nodes also include overload reports
   using the OC-OLR AVP in answer messages.

      Note: There is no new Diameter application defined to carry
      overload related AVPs.  The DOIC AVPs are carried in existing
      Diameter application messages.

   Note that the overload control solution does not have fixed server
   and client roles.  The DOIC node role is determined based on the
   message type: whether the message is a request (i.e. sent by a
   "reacting node") or an answer (i.e. send by a "reporting node").
   Therefore, in a typical "client-server" deployment, the "client" MAY
   report its overload condition to the "server" for any server
   initiated message exchange.  An example of such is the server
   requesting a re-authentication from a client.

3.2.  DOIC Capability Announcement

   The DOIC solutions supports the ability for Diameter nodes to
   determine if other nodes in the path of a request support the
   solution.  This capability is refered to as DOIC Capability
   Announcement (DCA) and is separate from Diameter Capability Exchange.

   The DCA mechanism is built around the piggybacking principle used for
   transporting Diameter overload AVPs.  This includes both DCA AVPs and
   AVPs associated with Diameter overload reports.  This allows for the
   DCA AVPs to be carried across Diameter nodes that do not support the
   DOIC solution.



Korhonen, et al.         Expires April 24, 2015                 [Page 7]

Internet-Draft                    DOIC                      October 2014


   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the
   Diameter overload features supported.

   The first node in the path of a Diameter request that supports the
   DOIC solution inserts the OC-Supported-Feature AVP in the request
   message.  This includes an indication that it supports the loss
   overload abatement algorithm defined in this specification (see
   Section 5).  This insures that there is at least one commonly
   supported overload abatement algorithm between the reporting node and
   the reacting nodes in the path of the request.

      DOIC must support deployments where Diameter Clients and/or
      Diameter servers do not support the DOIC solution.  In this
      scenario, it is assumed that Diameter Agents that support the DOIC
      solution will handle overload abatement for the non supporting
      clients.  In this case the DOIC agent will insert the OC-
      Supporting-Features AVP in requests that do not already contain
      one, telling the reporting node that there is a DOIC node that
      will handle overload abatement.

   The reporting node inserts the OC-Supported-Feature AVP in all answer
   messages to requests that contained the OC-Supported-Feature AVP.
   The contents of the reporting node's OC-Supported-Feature AVP
   indicate the set of Diameter overload features supported by the
   reporting node with one exception.

   The reporting node only includes an indication of support for one
   overload abatement algorithm.  This is the algorithm that the
   reporting node intends to use should it enter an overload condition.
   Reacting nodes can use the indicated overload abatement algorithm to
   prepare for possible overload reports.

      Note that the loss algorithm defined in this document is a
      stateless abatement algorithm.  As a result it does not require
      any actions by reacting nodes prior to the receipt of an overload
      report.  Stateful abatement algorithms that base the abatement
      logic on a history of request messages sent might require reacting
      nodes to maintain state to insure that overload reports can be
      properly handled.

   The individual features supported by the DOIC nodes are indicated in
   the OC-Feature-Vector AVP.  Any semantics associated with the
   features will be defined in extension specifications that introduce
   the features.

   The DCA mechanism must also support the scenario where the set of
   features supported by the sender of a request and by agents in the
   path of a request differ.  In this case, the agent updates the OC-



Korhonen, et al.         Expires April 24, 2015                 [Page 8]

Internet-Draft                    DOIC                      October 2014


   Supported-Feature AVP to reflect the mixture of the two sets of
   supported features.

      The logic to determine the content of the modified OC-Supported-
      Feature AVP is out-of-scope for this specification and is left to
      implementation decisions.  Care must be taken in doing so not to
      introduce interoperability issues for downstream or upstream DOIC
      nodes.

3.3.  DOIC Overload Condition Reporting

   As with DOIC Capability Announcement, Overload Condition Reporting
   uses new AVPs (Section 6.3) to indicate an overload condition.

   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP
   includes the type of report, an overload report ID, the length of
   time that the report is valid and abatement algorithm specific AVPs.

   Two types of overload reports are defined in this document, host
   reports and realm reports.

   Host reports apply to traffic that is sent to a specific Diameter
   host.  The applies to requests that contain the Destination-Host AVP
   that contains a DiameterIdentity that matches that of the overload
   report.  These requests are referred to as host-routed requests.  A
   host report also applies to realm-routed requests, requests that do
   not have a Destination-Host AVP, when the selected route for the
   request is a connection to the impacted host.

   Realm reports apply to realm-routed requests for a specific realm as
   indicated in the Destination-Realm AVP.

   Reporting nodes are responsible for determining the need for a
   reduction of traffic.  The method for making this determination is
   implementation specific and depend on the type of overload report
   being generated.  A host report, for instance, will generally be
   generated by tracking utilization of resources required by the host
   to handle transactions for the the Diameter application.  A realm
   report will generally impact the traffic sent to multiple hosts and,
   as such, will typically require tracking the capacity of the servers
   able to handle realm-routed requests for the application.

   Once a reporting node determines the need for a reduction in traffic,
   it uses the DOIC defined AVPs to report on the condition.  These AVPs
   are included in answer messages sent or relayed by the reporting
   node.  The reporting node indicates the overload abatement algorithm
   that is to be used to handle the traffic reduction in the OC-




Korhonen, et al.         Expires April 24, 2015                 [Page 9]

Internet-Draft                    DOIC                      October 2014


   Supported-Features AVP.  The OC-OLR AVP is used to communicate
   information about the requested reduction.

   Reacting nodes, upon receipt of an overload report, are responsible
   for applying the abatement algorithm to traffic impacted by the
   overload report.  The method used for that abatement is dependent on
   the abatement algorithm.  The loss abatement algorithm is defined in
   this document (Section 5).  Other abatement algorithms can be defined
   in extensions to the DOIC solutions.

   As the conditions that lead to the generation of the overload report
   change the reporting node can send new overload reports requesting
   greater reduction if the condition gets worse or less reduction if
   the condition improves.  The reporting node sends an overload report
   with a duration of zero to indicate that the overlaod condition has
   ended and use of the abatement algorithm is no longer needed.

   The reacting node also determines when the overload report expires
   based on the OC-Validaty-Duration AVP in the overload report and
   stops applying the abatement algorithm when the report expires.

3.4.  DOIC Extensibility

   The DOIC solutions is designed to be extensible.  This extensibility
   is based on existing Diameter based extensibility mechanisms.

   There are multiple categories of extensions that are expected.  This
   includes the definition of new overload abatement algorithms, the
   definition of new report types and new definitions of the scope of
   messages impacted by an overload report.

   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes
   to communicate supported features.  The specific features supported
   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC
   extensions must define new values for the OC-Feature-Vector AVP.
   DOIC extensions also have the ability to add new AVPs to the OC-
   Supported-Features AVP, if additional information about the new
   feature is required to be communicate.

   Overload abatement algorithms use the OC-OLR AVP to communicate
   overload occurances.  This AVP can also be extended to add new AVPs
   allowing a reporting nodes to communicate additional information
   about handling an overload condition.

   If necessary, new extensions can also define new top level AVPs.  It
   is, however, recommended that DOIC extensions use the OC-Supported-
   Features and OC-OLR to carry all DOIC related AVPs.




Korhonen, et al.         Expires April 24, 2015                [Page 10]

Internet-Draft                    DOIC                      October 2014


3.5.  Simplified Example Architecture

   Figure 1 illustrates the simplified architecture for Diameter
   overload information conveyance.


    Realm X                                  Same or other Realms
   <--------------------------------------> <---------------------->


      +--^-----+                 : (optional) :
      |Diameter|                 :            :
      |Server A|--+     .--.     : +---^----+ :     .--.
      +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+
                  +--(        )--:-|  Agent |-:--(        )--|Diameter|
      +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |
      |Diameter|--+  `--(___.-'  :            :  `--(___.-'  +-----^--+
      |Server B|                 :            :
      +---^----+                 :            :

                          End-to-end Overload Indication
             1)  <----------------------------------------------->
                             Diameter Application Y

                  Overload Indication A    Overload Indication A'
             2)  <----------------------> <---------------------->
                 standard base protocol   standard base protocol



     Figure 1: Simplified architecture choices for overload indication
                                 delivery

   In Figure 1, the Diameter overload indication can be conveyed (1)
   end-to-end between servers and clients or (2) between servers and
   Diameter agent inside the realm and then between the Diameter agent
   and the clients when the Diameter agent acting as back-to-back-agent
   for DOIC purposes.

4.  Solution Procedures

   This section outlines the normative behavior associated with the DOIC
   solution.








Korhonen, et al.         Expires April 24, 2015                [Page 11]

Internet-Draft                    DOIC                      October 2014


4.1.  Capability Announcement

   This section defines DOIC Capability Announcement (DCA) behavior.

   The DCA procedures are used to indicate support for DOIC and support
   for DOIC features.  The DOIC features include overload abatement
   algorithms supported.  It might also include new report types or
   other extensions documented in the future.

   Diameter nodes indicate support for DOIC by including the OC-
   Supported-Features AVP in messages sent or handled by the node.

   Diameter agents that support DOIC MUST ensure that all messages have
   the OC-Supporting-Features AVP.  If a message handled by the DOIC
   agent does not include the OC-Supported-Features AVP then the DOIC
   agent inserts the AVP.  If the message already has the AVP then the
   agent either leaves it unchanged in the relayed message or modifies
   it to reflect a mixed set of DOIC features.

4.1.1.  Reacting Node Behavior

   A reacting node MUST include the OC-Supported-Features AVP in all
   request messages.

   A reacting node MAY include the OC-Feature-Vector AVP with an
   indication of the loss algorithm.  A reacting node MUST include the
   OC-Feature-Vector AVP to indicate support for abatement algorithms in
   addition to the loss algorithm.

   A reacting node SHOULD indicate support for all other DOIC features
   it supports.

   An OC-Supported-Features AVP in answer messages indicates there is a
   reporting node for the transaction.  The reacting node MAY take
   action based on the features indicated in the OC-Feature-Vector AVP.

      Note that the loss abatement algorithm is the only feature
      described in this document and it does not require action to be
      taken when there is an active overload report.  This behavior is
      described in Section 4.2 and Section 5.

4.1.2.  Reporting Node Behavior

   Upon receipt of a request message, a reporting node determines if
   there is a reacting node for the transaction based on the presence of
   the OC-Supported-Features AVP.





Korhonen, et al.         Expires April 24, 2015                [Page 12]

Internet-Draft                    DOIC                      October 2014


   Based on the content of the OC-Supported-Features AVP in the request
   message, the reporting node knows what overload control functionality
   supported by reacting node(s).  The reporting node then acts
   accordingly for the subsequent answer messages it initiates.

   If the reqeust message contains an OC-Supported-Features AVP then the
   reporting node MUST include the OC-Supported-Features AVP in the
   answer message for that transaction.

   The reporting node MUST indicate support for one and only one
   abatement algorithm in the OC-Feature-Vector AVP.  The abatement
   algorithm included MUST be from the set of abatement algorithms
   contained in the request messages OC-Supported-Features AVP.  The
   abatement algorithm included indicates the abatement algorithm the
   reporting node wants the reacting node to use when the reporting node
   enters an overload condition.

   The reporting node MUST NOT change the selected algorithm during a
   period of time that it is in an overload condition and, as a result,
   is sending OC-OLR AVPs in answer messages.

   The reporting node SHOULD indicate support for other DOIC features it
   supports and that apply to the transaction.

      Note that not all DOIC features will apply to all Diameter
      applications or deployment scenarios.  The features included in
      the OC-Feature-Vector AVP is based on local reporting node policy.

   The reporting node MUST NOT include the OC-Supported-Features AVP,
   OC-OLR AVP or any other overload control AVPs defined in extension
   drafts in response messages for transactions where the request
   message does not include the OC-Supported-Features AVP.  Lack of the
   OC-Supported-Features AVP in the request message indicates that there
   is no reacting node for the transaction.

   An agent MAY modify the OC-Supported-Features AVP carried in answer
   messages.

4.2.  Overload Report Processing

4.2.1.  Overload Control State

   Both reacting and reporting nodes maintain an overload control state
   (OCS) for active overload reports.







Korhonen, et al.         Expires April 24, 2015                [Page 13]

Internet-Draft                    DOIC                      October 2014


4.2.1.1.  Overload Control State for Reacting Nodes

   A reacting node maintains the following OCS per supported Diameter
   application:

   o  A host-type Overload Control State for each Destination-Host
      towards which it sends host-type requests and

   o  A realm-type Overload Control State for each Destination-Realm
      towards which it sends realm-type requests.

   A host-type Overload Control State may be identified by the pair of
   Application-Id and Destination-Host.  A realm-type Overload Control
   State may be identified by the pair of Application-Id and
   Destination-Realm.  The host-type/realm-type Overload Control State
   for a given pair of Application and Destination-Host / Destination-
   Realm could include the following information:

   o  Sequence number (as received in OC-OLR)

   o  Time of expiry (deviated from validity duration as received in OC-
      OLR and time of reception)

   o  Selected Abatement Algorithm (as received in OC-Supported-
      Features)

   o  Algorithm specific input data (as received within OC-OLR, e.g.
      Reduction Percentage for Loss)

4.2.1.2.  Overload Control States for Reporting Nodes

   A reporting node maintains per supported Diameter application and per
   supported (and eventually selected) Abatement Algorithm an Overload
   Control State.

   An Overload Control State may be identified by the pair of
   Application-Id and supported Abatement Algorithm.

   The Overload Control State for a given pair of Application and
   Abatement Algorithm could include the information:

   o  Report type

   o  Sequence number

   o  Validity Duration and Expiry Time





Korhonen, et al.         Expires April 24, 2015                [Page 14]

Internet-Draft                    DOIC                      October 2014


   o  Algorithm specific input data (e.g.  Reduction Percentage for
      Loss)

4.2.1.3.  Maintaining Overload Control State

   Reacting nodes create a host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless
   such host-type OCS already exists.

   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id
   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP
   unless such realm type OCS already exists.

   Reacting nodes delete an OCS when it expires (i.e. when current time
   minus reception time is greater than validity duration).

   Reacting nodes also delete on OCS with an updated OLR is received
   with a validity duration of zero.

   Reacting nodes update the host-type OCS identified by OCS-Id = (app-
   id,host-id) when receiving an answer message of application app-id
   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a
   sequence number higher than the stored sequence number.

   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-
   id,realm-id) when receiving an answer message of application app-id
   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with
   a sequence number higher than the stored sequence number.

   Reacting nodes do not delete an OCS when receiving an answer message
   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no
   change").

   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)
   when receiving a request of application app-id containing an OC-
   Supported-Features AVP indicating support of the Abatement Algorithm
   Alg (which the reporting node selects) while being overloaded, unless
   such OCS already exists.

   Reporting nodes delete an OCS when it expires.

   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)
   when they detect the need to modify the requested amount of
   application app-id traffic reduction.





Korhonen, et al.         Expires April 24, 2015                [Page 15]

Internet-Draft                    DOIC                      October 2014


4.2.2.  Reacting Node Behavior

   Once a reacting node receives an OC-OLR AVP from a reporting node, it
   applies traffic abatement based on the selected algorithm with the
   reporting node and the current overload condition.  The reacting node
   learns the reporting node supported abatement algorithms directly
   from the received answer message containing the OC-Supported-Features
   AVP.

   The received OC-Supported-Features AVP does not change the existing
   overload condition and/or traffic abatement algorithm settings if the
   OC-Sequence-Number AVP contains a value that is equal to the
   previously received/recorded value.  If the OC-Supported-Features AVP
   is received for the first time for the reporting node or the OC-
   Sequence-Number AVP value is less than the previously received/
   recorded value (and is outside the valid overflow window), then the
   sequence number is stale (e.g. an intentional or unintentional
   replay) and SHOULD be silently discarded.

   As described in Section 6.3, the OC-OLR AVP contains the necessary
   information for the overload condition on the reporting node.

   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting
   node learns whether the overload condition report concerns a specific
   host (as identified by the Origin-Host AVP of the answer message
   containing the OC-OLR AVP) or the entire realm (as identified by the
   Origin-Realm AVP of the answer message containing the OC-OLR AVP).
   The reacting node learns the Diameter application to which the
   overload report applies from the Application-ID of the answer message
   containing the OC-OLR AVP.  The reacting node MUST use this
   information as an input for its traffic abatement algorithm.  The
   idea is that the reacting node applies different handling of the
   traffic abatement, whether sent request messages are targeted to a
   specific host (identified by the Diameter-Host AVP in the request) or
   to any host in a realm (when only the Destination-Realm AVP is
   present in the request).  Note that future specifications MAY define
   new OC-Report-Type AVP values that imply different handling of the
   OC-OLR AVP.  For example, in a form of new additional AVPs inside the
   Grouped OC-OLR AVP that would define report target in a finer
   granularity than just a host.

   If the OC-OLR AVP is received for the first time, the reacting node
   MUST create overload control state associated with the related realm
   or a specific host in the realm identified in the message carrying
   the OC-OLR AVP, as described in Section 4.2.1.

   If the value of the OC-Sequence-Number AVP contained in the received
   OC-OLR AVP is equal to or less than the value stored in an existing



Korhonen, et al.         Expires April 24, 2015                [Page 16]

Internet-Draft                    DOIC                      October 2014


   overload control state, the received OC-OLR AVP SHOULD be silently
   discarded.  If the value of the OC-Sequence-Number AVP contained in
   the received OC-OLR AVP is greater than the value stored in an
   existing overload control state or there is no previously recorded
   sequence number, the reacting node MUST update the overload control
   state associated with the realm or the specific node in the realm.

   When an overload control state is created or updated, the reacting
   node MUST apply the traffic abatement requested in the OC-OLR AVP
   using the algorithm announced in the OC-Supported-Features AVP
   contained in the received answer message along with the OC-OLR AVP.

   The validity duration of the overload information contained in the
   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration
   AVP or is implicitly equals to the default value if the OC-Validity-
   Duration AVP is absent.  The reacting node MUST maintain the validity
   duration in the overload control state.  Once the validity duration
   times out, the reacting node MUST assume the overload condition
   reported in a previous OC-OLR AVP has ended.

   A value of zero ("0") received in the OC-Validity-Duration in an
   updated overload report indicates that the overload condition has
   ended and that the overload state is no longer valid.

   In the case that the validity duration expires or is explicitly
   signaled as being no longer valid the state associated with the
   overload report MUST be removed and any abatement associated with the
   overload report MUST be ended in a controlled fashion.  After
   removing the overload state the sequence number MUST NOT be used for
   future comparisons of sequence numbers.

4.2.3.  Reporting Node Behavior

   A reporting node is a Diameter node inserting an OC-OLR AVP in a
   Diameter message in order to inform a reacting node about an overload
   condition and request Diameter traffic abatement.

   The operation on the reporting node is straight forward.  The
   reporting node learns the capabilities of the reacting node when it
   receives the OC-Supported-Features AVP as part of any Diameter
   request message.  Since the loss abatement algorithm Section 5 is
   mandatory to implement DOIC can always be enabled between these DOIC
   nodes See Section 4.1 for further discussion on the capability and
   feature announcement.

   When a traffic reduction is required due to an overload condition and
   the overload control solution is supported by the sender of the




Korhonen, et al.         Expires April 24, 2015                [Page 17]

Internet-Draft                    DOIC                      October 2014


   Diameter request, the reporting node SHOULD include an OC-Supported-
   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.

   A reporting node MAY choose to not resend an overload report to a
   reacting node if it can guarantee that this overload report is
   already active in the reacting node.

      Note - In some cases (e.g. when there are one or multiple agents
      in the path between reporting and reacting nodes, or when overload
      reports are discarded by reacting nodes) the reporting node may
      not be able to guarantee that the reacting node has received the
      report.

   The OC-OLR AVP contains the required traffic reduction and the OC-
   Supported-Features AVP indicates the traffic abatement algorithm to
   apply.  This algorithm MUST be one of the algorithms advertised by
   the request sender.

   A reporting node MUST only send overload reports of a type advertised
   as supported by the reacting node.

      Note that a reacting node advertises support for the host and
      realm report types by including the OC-Supported-Features AVP in
      the request.  Support for other report types must be explicitly
      indicated by a new feature bit in the OC-Feature-Vector AVP.

   If OLR is for a new overload condition and there is no unexpired
   overload report for previous overload conditions at any reacting node
   then the reporting node MAY set the sequence number to any value.

   The reporting node MAY update the overload report with new reduction
   percentages.

   The reporting node MAY extend the validatity duration for an existing
   overload report by sending a OLR with either the same or a new
   validity duration value.

   When sending an overload report with new values in any of the sub
   AVPs for an existing overload condition, the reporting node MUST
   increase the sequence number in the new OLR sent.

   When generating sequence numbers for new overload conditions, the new
   sequence number MUST be greater than any sequence number in an active
   (unexpired) overload report previously sent by the reporting node.
   This property MUST hold over a reboot of the reporting node.

   A reporting node MAY rely on the OC-Validity-Duration AVP values for
   the implicit overload control state cleanup on the reacting node.



Korhonen, et al.         Expires April 24, 2015                [Page 18]

Internet-Draft                    DOIC                      October 2014


   However, it is RECOMMENDED that the reporting node always explicitly
   indicates the end of a overload condition.

   The reporting node SHOULD indicate the end of an overload occurrence
   by sending a new OLR with OC-Validity-Duration set to a value of zero
   ("0").  The reporting node SHOULD insure that all reacting nodes
   receive the updated overload report.

   When a reporting node sends an OLR, it effectively delegates any
   necessary throttling to downstream nodes.  Therefore, the reporting
   node SHOULD NOT apply throttling to the set of messages to which the
   OLR applies.  That is, the same candidate set of messages SHOULD NOT
   be throttled multiple times.

   However, when the reporting node sends and OLR downstream, it MAY
   still be responsible to apply other abatement methods, such as
   diversion, or request throttling requests for other reasons.  For
   example, an agent or server might have a configured rate limit for
   each client, and throttle requests that exceed that limit, even if
   such requests had already been candidates for throttling by
   downstream nodes.

      All OLRs sent have an expiration time calculated by adding the
      validity-duration contained in the OLR to the time the message was
      sent.  Transit time for the OLR can be safely ignored.  The
      reporting node can ensure that all reacting nodes have received
      the OLR by continuing to send it in answer messages until the
      expiration time for all OLRs sent for that overload contition have
      expired.

   This document assumes that there is a single source for realm-reports
   for a given realm, or that if multiple nodes can send realm reports,
   that each such node has full knowledge of the overload state of the
   entire realm.  A reacting node cannot distinguish between receiving
   realm-reports from a single node, or from multiple nodes.

   If multiple such nodes exist, they MUST ensure that realm-reports are
   kept in sync.  This includes synchronizing the sequence numbers as
   well as the reported overload state.  The method of doing so is up to
   the implementation.  One way to keep the sequence numbers in sync is
   to generate the sequence numbers based on system time.

4.3.  Protocol Extensibility

   The overload control solution can be extended, e.g. with new traffic
   abatement algorithms, new report types or other new functionality.





Korhonen, et al.         Expires April 24, 2015                [Page 19]

Internet-Draft                    DOIC                      October 2014


   When defining a new extension a new feature bit MUST be defined for
   the OC-Feature-Vector.  This feature bit is used to communicate
   support for the new feature.

   The extention may also define new AVPs for use in DOIC Capability
   Anouncement and for use in DOIC Overload reporting.  These new AVP
   should be defined to be extensions to the OC-Supported-Features and
   OC-OLR AVPs defined in this document.

   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.

   The handling of feature bits in the OC-Feature-Vector AVP that are
   not associated with overload abatement algorithms MUST be specified
   by the extensions that define the features.

   When defining new report type values, the corresponding specification
   MUST define the semantics of the new report types and how they affect
   the OC-OLR AVP handling.  The specification MUST also reserve a
   corresponding new feature, see the OC-Supported-Features and OC-
   Feature-Vector AVPs.

   The OC-OLR AVP can be expanded with optional sub-AVPs only if a
   legacy implementation can safely ignore them without breaking
   backward compatibility for the given OC-Report-Type AVP value implied
   report handling semantics.  If the new sub-AVPs imply new semantics
   for handling the indicated report type, then a new OC-Report-Type AVP
   value MUST be defined.

   New features (feature bits in the OC-Feature-Vector AVP) and report
   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As
   with any Diameter specification, new AVPs MUST also be registered
   with IANA.  See Section 8 for the required procedures.

5.  Loss Algorithm

   This section documents the Diameter overload loss abatement
   algorithm.

5.1.  Overview

   The DOIC specification supports the ability for multiple overload
   abatement algorithms to be specified.  The abatement algorithm used
   for any instance of overload is determined by the Diameter Overload
   Capability Announcement process documented in Section 4.1.




Korhonen, et al.         Expires April 24, 2015                [Page 20]

Internet-Draft                    DOIC                      October 2014


   The loss algorithm described in this section is the default algorithm
   that must be supported by all Diameter nodes that support DOIC.

   The loss algorithm is designed to be a straightforward and stateless
   overload abatement algorithm.  It is used by reporting nodes to
   request a percentage reduction in the amount of traffic sent.  The
   traffic impacted by the requested reduction depends on the type of
   overload report.

   Reporting nodes use a strategy of applying abatement logic to the
   requested percentage of request messages sent (or handled in the case
   of agents) by the reacting node that are impacted by the overload
   report.

   From a conceptual level, the logic at the reacting node could be
   outlined as follows.  In this discussion assume that the reacting
   node is also the sending node.

   1.  An overload report is received and the associated overload state
       is saved by the reacting node.

   2.  A new Diameter request is generated by the application running on
       the reacting node.

   3.  The reacting node determines that an active overload report
       applies to the request.

   4.  The reacting node determines if abatement should be applied to
       the request.  One approach that could be taken would be to select
       a random number between 1 and 100.  If the random number is less
       than the indicated reduction percentage then the request is given
       abatement treatment, otherwise the request is given normal
       routing treatment.

5.2.  Reporting Node Behavior

   The method a reporting nodes uses to determine the amount of traffic
   reduction required to address an overload condition is an
   implementation decision.

   When a reporting node that has selected the loss abatement algorithm
   determines the need to request a traffic reduction it includes an OC-
   OLR AVP in response messages as described in Section 4.2.3.

   The reporting node must indicate a percentage reduction in the OC-
   Reduction-Percentage AVP.





Korhonen, et al.         Expires April 24, 2015                [Page 21]

Internet-Draft                    DOIC                      October 2014


   The reporting node may change the reduction percentage in subsequent
   overload reports.  When doing so the reporting node must conform to
   overload report handing specified in Section 4.2.3.

   When the reporting node determines it no longer needs a reduction in
   traffic the reporting node should send an overload report indicating
   the overload report is no longer valid, as specified in
   Section 4.2.3.

5.3.  Reacting Node Behavior

   The method a reacting node uses to determine which request messages
   are given abatement treatment is an implementation decision.

   When receiving an OC-OLR in an answer message where the algorithm
   indicated in the OC-Supported-Features AVP is the loss algorithm, the
   reacting node must attempt to apply abatement treatment to the
   requested percentage of request messages sent.

      Note: the loss algorithm is a stateless algorithm.  As a result,
      the reacting node does not guarantee that there will be an
      absolute reduction in traffic sent.  Rather, it guarantees that
      the requested percentage of new requests will be given abatement
      treatment.

   If reacting node comes out of the 100 percent traffic reduction as a
   result of the overload report timing out, the following concerns are
   RECOMMENDED to be applied.  The reacting node sending the traffic
   should be conservative and, for example, first send "probe" messages
   to learn the overload condition of the overloaded node before
   converging to any traffic amount/rate decided by the sender.  Similar
   concerns apply in all cases when the overload report times out unless
   the previous overload report stated 0 percent reduction.

   If the reacting node does not receive a an OLR in messages sent to
   the formally overloaded node then the reacting node should slowly
   increase the rate of traffic sent to the overloaded node.

   It is suggested that the reacting node decrease the amount of traffic
   given abatement treatment by 20% each second until the reduction is
   completely removed and no traffic is given abatement treatment.

      The goal of this behavior is to reduce the probability of overload
      condition thrashing where an immediate transition from 100%
      reduction to 0% reduction results in the reporting node moving
      quickly back into an overload condition.





Korhonen, et al.         Expires April 24, 2015                [Page 22]

Internet-Draft                    DOIC                      October 2014


6.  Attribute Value Pairs

   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.

   When added to existing commands, both OC-Feature-Vector and OC-OLR
   AVPs SHOULD have the M-bit flag cleared to avoid backward
   compatibility issues.

   A new application specification can incorporate the overload control
   mechanism specified in this document by making it mandatory to
   implement for the application and referencing this specification
   normatively.  In such a case, the rules for handling of the M-bit
   must follow the guidance in [RFC6733].  It is the responsibility of
   the Diameter application designers to define how overload control
   mechanisms works on that application.

6.1.  OC-Supported-Features AVP

   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and
   serves two purposes.  First, it announces a node's support for the
   DOIC solution in general.  Second, it contains the description of the
   supported DOIC features of the sending node.  The OC-Supported-
   Features AVP MUST be included in every Diameter message a DOIC
   supporting node sends.

      OC-Supported-Features ::= < AVP Header: TBD1 >
                                [ OC-Feature-Vector ]
                              * [ AVP ]


   The OC-Feature-Vector sub-AVP is used to announce the DOIC features
   supported by the DOIC node, in the form of a flag bits field in which
   each bit announces one feature or capability supported by the node
   (see Section 6.2).  The absence of the OC-Feature-Vector AVP
   indicates that only the default traffic abatement algorithm described
   in this specification is supported.

6.2.  OC-Feature-Vector AVP

   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and
   contains a 64 bit flags field of announced capabilities of a DOIC
   node.  The value of zero (0) is reserved.

   The following capabilities are defined in this document:

   OLR_DEFAULT_ALGO (0x0000000000000001)



Korhonen, et al.         Expires April 24, 2015                [Page 23]

Internet-Draft                    DOIC                      October 2014


      When this flag is set by the DOIC node it means that the default
      traffic abatement (loss) algorithm is supported.

6.3.  OC-OLR AVP

   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the
   information necessary to convey an overload report.  The OC-OLR AVP
   does not explicitly contain all information needed by the reacting
   node to decide whether a subsequent request must undergo a throttling
   process with the received reduction percentage.  The value of the OC-
   Report-Type AVP within the OC-OLR AVP indicates which implicit
   information is relevant for this decision (see Section 6.6).  The
   application the OC-OLR AVP applies to is the same as the Application-
   Id found in the Diameter message header.  The host or realm the OC-
   OLR AVP concerns is determined from the Origin-Host AVP and/or
   Origin-Realm AVP found in the encapsulating Diameter command.  The
   OC-OLR AVP is intended to be sent only by a reporting node.

      OC-OLR ::= < AVP Header: TBD2 >
                 < OC-Sequence-Number >
                 < OC-Report-Type >
                 [ OC-Reduction-Percentage ]
                 [ OC-Validity-Duration ]
               * [ AVP ]


   Note that if a Diameter command were to contain multiple OC-OLR AVPs
   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs
   with unknown values SHOULD be silently discarded and the event SHOULD
   be logged.

6.4.  OC-Sequence-Number AVP

   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.
   Its usage in the context of overload control is described in
   Section 4.2.

   From the functionality point of view, the OC-Sequence-Number AVP MUST
   be used as a non-volatile increasing counter for a sequence of
   overload reports between two DOIC nodes for the same overload
   occurrence.  The sequence number is only required to be unique
   between two DOIC nodes.  Sequence numbers are treated in a uni-
   directional manner, i.e. two sequence numbers on each direction
   between two DOIC nodes are not related or correlated.

   When generating sequence numbers, the new sequence number MUST be
   greater than any sequence number in an active, unexpired, overload




Korhonen, et al.         Expires April 24, 2015                [Page 24]

Internet-Draft                    DOIC                      October 2014


   report previously sent by the reporting node.  This property MUST
   hold over a reboot of the reporting node.

6.5.  OC-Validity-Duration AVP

   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32
   and indicates in seconds the validity time of the overload report.
   The number of seconds is measured after reception of the first OC-OLR
   AVP with a given value of OC-Sequence-Number AVP.  The default value
   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the
   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the
   default value applies.  Validity duration with values above 86400
   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are
   treated as if the OC-Validity-Duration AVP were not present and
   result in the default value being used.

   A timeout of the overload report has specific concerns that need to
   be taken into account by the DOIC node acting on the earlier received
   overload report(s).  Section 6.7 discusses the impacts of timeout in
   the scope of the traffic abatement algorithms.

   When a reporting node has recovered from overload, it SHOULD
   invalidate any existing overload reports in a timely matter.  This
   can be achieved by sending an updated overload report (meaning the
   OLR contains a new sequence number) with the OC-Validity-Duration AVP
   value set to zero ("0").  If the overload report is about to expire
   naturally, the reporting node MAY choose to simply let it do so.

   A reacting node MUST invalidate and remove an overload report that
   expires without an explicit overload report containing an OC-
   Validity-Duration value set to zero ("0").

6.6.  OC-Report-Type AVP

   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The
   value of the AVP describes what the overload report concerns.  The
   following values are initially defined:

   0  A host report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      Either the Destination-Host AVP is present in the request and its
      value matches the value of the Origin-Host AVP of the received
      message that contained the OC-OLR AVP; or the Destination-Host is
      not present in the request but the value of peer identity
      associated with the connection used to send the request matches
      the value of the Origin-Host AVP of the received message that
      contained the OC-OLR AVP.



Korhonen, et al.         Expires April 24, 2015                [Page 25]

Internet-Draft                    DOIC                      October 2014


      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

   1  A realm report.  The overload treatment should apply to requests
      for which all of the following conditions are true:

      The Destination-Host AVP is absent in the request.

      The value of the Destination-Realm AVP in the request matches the
      value of the Origin-Realm AVP of the received message that
      contained the OC-OLR AVP.

      The value of the Application-ID in the Diameter Header of the
      request matches the value of the Application-ID of the Diameter
      Header of the received message that contained the OC-OLR AVP.

   The OC-Report-Type AVP is envisioned to be useful for situations
   where a reacting node needs to apply different overload treatments
   for different "types" of overload.  For example, the reacting node(s)
   might need to throttle differently requests sent to a specific server
   (identified by the Destination-Host AVP in the request) and requests
   that can be handled by any server in a realm.

6.7.  OC-Reduction-Percentage AVP

   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32
   and describes the percentage of the traffic that the sender is
   requested to reduce, compared to what it otherwise would send.  The
   OC-Reduction-Percentage AVP applies to the default (loss) algorithm
   specified in this specification.  However, the AVP can be reused for
   future abatement algorithms, if its semantics fit into the new
   algorithm.

   The value of the Reduction-Percentage AVP is between zero (0) and one
   hundred (100).  Values greater than 100 are ignored.  The value of
   100 means that all traffic is to be throttled, i.e. the reporting
   node is under a severe load and ceases to process any new messages.
   The value of 0 means that the reporting node is in a stable state and
   has no need for the reacting node to apply any traffic abatement.
   The default value of the OC-Reduction-Percentage AVP is 0.  When the
   OC-Reduction-Percentage AVP is not present in the overload report,
   the default value applies.




Korhonen, et al.         Expires April 24, 2015                [Page 26]

Internet-Draft                    DOIC                      October 2014


6.8.  Attribute Value Pair flag rules

                                                         +---------+
                                                         |AVP flag |
                                                         |rules    |
                                                         +----+----+
                              AVP   Section              |    |MUST|
       Attribute Name         Code  Defined  Value Type  |MUST| NOT|
      +--------------------------------------------------+----+----+
      |OC-Supported-Features  TBD1  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-OLR                 TBD2  x.x      Grouped     |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Sequence-Number     TBD3  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Validity-Duration   TBD4  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Report-Type         TBD5  x.x      Enumerated  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Reduction                                      |    |    |
      |  -Percentage          TBD8  x.x      Unsigned32  |    | V  |
      +--------------------------------------------------+----+----+
      |OC-Feature-Vector      TBD6  x.x      Unsigned64  |    | V  |
      +--------------------------------------------------+----+----+


   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP.

   The Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.  Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set.

7.  Error Response Codes

   When a DOIC node rejects a Diameter request due to throttling, the
   DOIC node needs to select the appropriate error response code.  This
   determination is made based on the probability of the request
   succeeding if retried on a different path.

   The DIAMETER_TOO_BUSY response code SHOULD be used when the request
   is likely to succeed on a different path.

      For instance, if the request arrived at the reporting node without
      a Destination-Host AVP then the reporting node might determine



Korhonen, et al.         Expires April 24, 2015                [Page 27]

Internet-Draft                    DOIC                      October 2014


      that there is an alternative Diameter node that could successfully
      process the request and that retrying the transaction would not
      negatively impact the reporting node.

   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
   indicate that the request should not be retried.  This is used when
   the request is not likely to succeed on a different path and retrying
   would consume valuable resources during an occurance of overload.

      For instance, if the request arrived at the reporting node with a
      Destination-Host AVP populated with its own Diameter identity then
      the reporting node can assume that retrying the request would
      result in it coming to the same reporting node.

      A second example is when an agent that supports the DOIC solution
      is preforming the role of a reacting node for a non supporting
      client.  Requests that are rejected as a result of DOIC throttling
      in this scenario would generally be rejected with a
      DIAMETER_UNABLE_TO_COMPLY response code.

8.  IANA Considerations

8.1.  AVP codes

   New AVPs defined by this specification are listed in Section 6.  All
   AVP codes allocated from the 'Authentication, Authorization, and
   Accounting (AAA) Parameters' AVP Codes registry.

8.2.  New registries

   Three new registries are needed under the 'Authentication,
   Authorization, and Accounting (AAA) Parameters' registry.

   Section 6.2 defines a new "Overload Control Feature Vector" registry
   including the initial assignments.  New values can be added into the
   registry using the Specification Required policy [RFC5226].  See
   Section 6.2 for the initial assignment in the registry.

   Section 6.6 defines a new "Overload Report Type" registry with its
   initial assignments.  New types can be added using the Specification
   Required policy [RFC5226].

9.  Security Considerations

   This mechanism gives Diameter nodes the ability to request that
   downstream nodes send fewer Diameter requests.  Nodes do this by
   exchanging overload reports that directly affect this reduction.
   This exchange is potentially subject to multiple methods of attack,



Korhonen, et al.         Expires April 24, 2015                [Page 28]

Internet-Draft                    DOIC                      October 2014


   and has the potential to be used as a Denial-of-Service (DoS) attack
   vector.

   Overload reports may contain information about the topology and
   current status of a Diameter network.  This information is
   potentially sensitive.  Network operators may wish to control
   disclosure of overload reports to unauthorized parties to avoid its
   use for competitive intelligence or to target attacks.

   Diameter does not include features to provide end-to-end
   authentication, integrity protection, or confidentiality.  This may
   cause complications when sending overload reports between non-
   adjacent nodes.

9.1.  Potential Threat Modes

   The Diameter protocol involves transactions in the form of requests
   and answers exchanged between clients and servers.  These clients and
   servers may be peers, that is,they may share a direct transport (e.g.
   TCP or SCTP) connection, or the messages may traverse one or more
   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,
   DTLS, or IPSec to authenticate peers, and to provide confidentiality
   and integrity protection of traffic between peers.  Nodes can make
   authorization decisions based on the peer identities authenticated at
   the transport layer.

   When agents are involved, this presents an effectively hop-by-hop
   trust model.  That is, a Diameter client or server can authorize an
   agent for certain actions, but it must trust that agent to make
   appropriate authorization decisions about its peers, and so on.

   Since confidentiality and integrity protection occurs at the
   transport layer.  Agents can read, and perhaps modify, any part of a
   Diameter message, including an overload report.

   There are several ways an attacker might attempt to exploit the
   overload control mechanism.  An unauthorized third party might inject
   an overload report into the network.  If this third party is upstream
   of an agent, and that agent fails to apply proper authorization
   policies, downstream nodes may mistakenly trust the report.  This
   attack is at least partially mitigated by the assumption that nodes
   include overload reports in Diameter answers but not in requests.
   This requires an attacker to have knowledge of the original request
   in order to construct a response.  Therefore, implementations SHOULD
   validate that an answer containing an overload report is a properly
   constructed response to a pending request prior to acting on the
   overload report.




Korhonen, et al.         Expires April 24, 2015                [Page 29]

Internet-Draft                    DOIC                      October 2014


   A similar attack involves an otherwise authorized Diameter node that
   sends an inappropriate overload report.  For example, a server for
   the realm "example.com" might send an overload report indicating that
   a competitor's realm "example.net" is overloaded.  If other nodes act
   on the report, they may falsely believe that "example.net" is
   overloaded, effectively reducing that realm's capacity.  Therefore,
   it's critical that nodes validate that an overload report received
   from a peer actually falls within that peer's responsibility before
   acting on the report or forwarding the report to other peers.  For
   example, an overload report from an peer that applies to a realm not
   handled by that peer is suspect.

   An attacker might use the information in an overload report to assist
   in certain attacks.  For example, an attacker could use information
   about current overload conditions to time a DoS attack for maximum
   effect, or use subsequent overload reports as a feedback mechanism to
   learn the results of a previous or ongoing attack.

9.2.  Denial of Service Attacks

   Diameter overload reports can cause a node to cease sending some or
   all Diameter requests for an extended period.  This makes them a
   tempting vector for DoS tacks.  Furthermore, since Diameter is almost
   always used in support of other protocols, a DoS attack on Diameter
   is likely to impact those protocols as well.  Therefore, Diameter
   nodes MUST NOT honor or forward overload reports from unauthorized or
   otherwise untrusted sources.

9.3.  Non-Compliant Nodes

   When a Diameter node sends an overload report, it cannot assume that
   all nodes will comply.  A non-compliant node might continue to send
   requests with no reduction in load.  Requirement 28 [RFC7068]
   indicates that the overload control solution cannot assume that all
   Diameter nodes in a network are necessarily trusted, and that
   malicious nodes not be allowed to take advantage of the overload
   control mechanism to get more than their fair share of service.

   In the absence of an overload control mechanism, Diameter nodes need
   to implement strategies to protect themselves from floods of
   requests, and to make sure that a disproportionate load from one
   source does not prevent other sources from receiving service.  For
   example, a Diameter server might reject a certain percentage of
   requests from sources that exceed certain limits.  Overload control
   can be thought of as an optimization for such strategies, where
   downstream nodes never send the excess requests in the first place.
   However, the presence of an overload control mechanism does not
   remove the need for these other protection strategies.



Korhonen, et al.         Expires April 24, 2015                [Page 30]

Internet-Draft                    DOIC                      October 2014


9.4.  End-to End-Security Issues

   The lack of end-to-end security features makes it far more difficult
   to establish trust in overload reports that originate from non-
   adjacent nodes.  Any agents in the message path may insert or modify
   overload reports.  Nodes must trust that their adjacent peers perform
   proper checks on overload reports from their peers, and so on,
   creating a transitive-trust requirement extending for potentially
   long chains of nodes.  Network operators must determine if this
   transitive trust requirement is acceptable for their deployments.
   Nodes supporting Diameter overload control MUST give operators the
   ability to select which peers are trusted to deliver overload
   reports, and whether they are trusted to forward overload reports
   from non-adjacent nodes.

   The lack of end-to-end confidentiality protection means that any
   Diameter agent in the path of an overload report can view the
   contents of that report.  In addition to the requirement to select
   which peers are trusted to send overload reports, operators MUST be
   able to select which peers are authorized to receive reports.  A node
   MUST not send an overload report to a peer not authorized to receive
   it.  Furthermore, an agent MUST remove any overload reports that
   might have been inserted by other nodes before forwarding a Diameter
   message to a peer that is not authorized to receive overload reports.

   At the time of this writing, the DIME working group is studying
   requirements for adding end-to-end security
   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,
   when they become available, might make it easier to establish trust
   in non-adjacent nodes for overload control purposes.  Readers should
   be reminded, however, that the overload control mechanism encourages
   Diameter agents to modify AVPs in, or insert additional AVPs into,
   existing messages that are originated by other nodes.  If end-to-end
   security is enabled, there is a risk that such modification could
   violate integrity protection.  The details of using any future
   Diameter end-to-end security mechanism with overload control will
   require careful consideration, and are beyond the scope of this
   document.

10.  Contributors

   The following people contributed substantial ideas, feedback, and
   discussion to this document:

   o  Eric McMurry

   o  Hannes Tschofenig




Korhonen, et al.         Expires April 24, 2015                [Page 31]

Internet-Draft                    DOIC                      October 2014


   o  Ulrich Wiehe

   o  Jean-Jacques Trottin

   o  Maria Cruz Bartolome

   o  Martin Dolly

   o  Nirav Salot

   o  Susan Shishufeng

11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network
              Time Protocol Version 4: Protocol and Algorithms
              Specification", RFC 5905, June 2010.

   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
              "Diameter Base Protocol", RFC 6733, October 2012.

11.2.  Informative References

   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.

   [I-D.ietf-dime-e2e-sec-req]
              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,
              "Diameter AVP Level Security: Scenarios and Requirements",
              draft-ietf-dime-e2e-sec-req-00 (work in progress),
              September 2013.

   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.

   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.
              Loughney, "Diameter Credit-Control Application", RFC 4006,
              August 2005.






Korhonen, et al.         Expires April 24, 2015                [Page 32]

Internet-Draft                    DOIC                      October 2014


   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,
              "Clarifications on the Routing of Diameter Requests Based
              on the Username and the Realm", RFC 5729, December 2009.

   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control
              Requirements", RFC 7068, November 2013.

   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.

Appendix A.  Issues left for future specifications

   The base solution for the overload control does not cover all
   possible use cases.  A number of solution aspects were intentionally
   left for future specification and protocol work.

A.1.  Additional traffic abatement algorithms

   This specification describes only means for a simple loss based
   algorithm.  Future algorithms can be added using the designed
   solution extension mechanism.  The new algorithms need to be
   registered with IANA.  See Sections 6.1 and 8 for the required IANA
   steps.

A.2.  Agent Overload

   This specification focuses on Diameter endpoint (server or client)
   overload.  A separate extension will be required to outline the
   handling the case of agent overload.

A.3.  DIAMETER_TOO_BUSY clarifications

   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is
   somewhat under specified.  For example, there is no information how
   long the specific Diameter node is willing to be unavailable.  A
   specification updating [RFC6733] should clarify the handling of
   DIAMETER_TOO_BUSY from the error answer initiating Diameter node
   point of view and from the original request initiating Diameter node
   point of view.  Further, the inclusion of possible additional
   information providing AVPs should be discussed and possible be
   recommended to be used.

Appendix B.  Deployment Considerations

   Non supporting agents

      Due to the way that realm-routed requests are handled in Diameter
      networks, with the server selection for the request done by an
      agent, it is recommended that deployments upgrade all agents with



Korhonen, et al.         Expires April 24, 2015                [Page 33]

Internet-Draft                    DOIC                      October 2014


      direct connections to servers prior to enabling the DOIC solution
      in the Diameter network.

   Topology hiding interactions

      There exist proxies that implement what is refered to as Topology
      Hiding.  This can include cases where the agent modifies the
      Origin-Host in answer messages.  The behavior of the DOIC solution
      is not well understood when this happens.  As such, the DOIC
      solution does not address this scenario.

Appendix C.  Considerations for Applications Integrating the DOIC
             Solution

   THis section outlines considerations to be taken into account when
   integrating the DOIC solution into Diameter applications.

C.1.  Application Classification

   The following is a classification of Diameter applications and
   requests.  This discussion is meant to document factors that play
   into decisions made by the Diameter identity responsible for handling
   overload reports.

   Section 8.1 of [RFC6733] defines two state machines that imply two
   types of applications, session-less and session-based applications.
   The primary difference between these types of applications is the
   lifetime of Session-Ids.

   For session-based applications, the Session-Id is used to tie
   multiple requests into a single session.

   In session-less applications, the lifetime of the Session-Id is a
   single Diameter transaction, i.e. the session is implicitly
   terminated after a single Diameter transaction and a new Session-Id
   is generated for each Diameter request.

   For the purposes of this discussion, session-less applications are
   further divided into two types of applications:

   Stateless applications:

      Requests within a stateless application have no relationship to
      each other.  The 3GPP defined S13 application is an example of a
      stateless application [S13], --> where only a Diameter command is
      defined between a client and a server and no state is maintained
      between two consecutive transactions.




Korhonen, et al.         Expires April 24, 2015                [Page 34]

Internet-Draft                    DOIC                      October 2014


   Pseudo-session applications:

      Applications that do not rely on the Session-Id AVP for
      correlation of application messages related to the same session
      but use other session-related information in the Diameter requests
      for this purpose.  The 3GPP defined Cx application [Cx] is an
      example of a pseudo-session application.

   The Credit-Control application defined in [RFC4006] is an example of
   a Diameter session-based application.

   The handling of overload reports must take the type of application
   into consideration, as discussed in Appendix C.2.

C.2.  Application Type Overload Implications

   This section discusses considerations for mitigating overload
   reported by a Diameter entity.  This discussion focuses on the type
   of application.  Appendix C.3 discusses considerations for handling
   various request types when the target server is known to be in an
   overloaded state.

   These discussions assume that the strategy for mitigating the
   reported overload is to reduce the overall workload sent to the
   overloaded entity.  The concept of applying overload treatment to
   requests targeted for an overloaded Diameter entity is inherent to
   this discussion.  The method used to reduce offered load is not
   specified here but could include routing requests to another Diameter
   entity known to be able to handle them, or it could mean rejecting
   certain requests.  For a Diameter agent, rejecting requests will
   usually mean generating appropriate Diameter error responses.  For a
   Diameter client, rejecting requests will depend upon the application.
   For example, it could mean giving an indication to the entity
   requesting the Diameter service that the network is busy and to try
   again later.

   Stateless applications:

      By definition there is no relationship between individual requests
      in a stateless application.  As a result, when a request is sent
      or relayed to an overloaded Diameter entity - either a Diameter
      Server or a Diameter Agent - the sending or relaying entity can
      choose to apply the overload treatment to any request targeted for
      the overloaded entity.

   Pseudo-session applications:





Korhonen, et al.         Expires April 24, 2015                [Page 35]

Internet-Draft                    DOIC                      October 2014


      For pseudo-session applications, there is an implied ordering of
      requests.  As a result, decisions about which requests towards an
      overloaded entity to reject could take the command code of the
      request into consideration.  This generally means that
      transactions later in the sequence of transactions should be given
      more favorable treatment than messages earlier in the sequence.
      This is because more work has already been done by the Diameter
      network for those transactions that occur later in the sequence.
      Rejecting them could result in increasing the load on the network
      as the transactions earlier in the sequence might also need to be
      repeated.

   Session-based applications:

      Overload handling for session-based applications must take into
      consideration the work load associated with setting up and
      maintaining a session.  As such, the entity sending requests
      towards an overloaded Diameter entity for a session-based
      application might tend to reject new session requests prior to
      rejecting intra-session requests.  In addition, session ending
      requests might be given a lower probability of being rejected as
      rejecting session ending requests could result in session status
      being out of sync between the Diameter clients and servers.
      Application designers that would decide to reject mid-session
      requests will need to consider whether the rejection invalidates
      the session and any resulting session clean-up procedures.

C.3.  Request Transaction Classification

   Independent Request:

      An independent request is not correlated to any other requests
      and, as such, the lifetime of the session-id is constrained to an
      individual transaction.

   Session-Initiating Request:

      A session-initiating request is the initial message that
      establishes a Diameter session.  The ACR message defined in
      [RFC6733] is an example of a session-initiating request.

   Correlated Session-Initiating Request:

      There are cases when multiple session-initiated requests must be
      correlated and managed by the same Diameter server.  It is notably
      the case in the 3GPP PCC architecture [PCC], where multiple
      apparently independent Diameter application sessions are actually
      correlated and must be handled by the same Diameter server.



Korhonen, et al.         Expires April 24, 2015                [Page 36]

Internet-Draft                    DOIC                      October 2014


   Intra-Session Request:

      An intra session request is a request that uses the same Session-
      Id than the one used in a previous request.  An intra session
      request generally needs to be delivered to the server that handled
      the session creating request for the session.  The STR message
      defined in [RFC6733] is an example of an intra-session requests.

   Pseudo-Session Requests:

      Pseudo-session requests are independent requests and do not use
      the same Session-Id but are correlated by other session-related
      information contained in the request.  There exists Diameter
      applications that define an expected ordering of transactions.
      This sequencing of independent transactions results in a pseudo
      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx
      [Cx] application are examples of pseudo-session requests.

C.4.  Request Type Overload Implications

   The request classes identified in Appendix C.3 have implications on
   decisions about which requests should be throttled first.  The
   following list of request treatment regarding throttling is provided
   as guidelines for application designers when implementing the
   Diameter overload control mechanism described in this document.  The
   exact behavior regarding throttling is a matter of local policy,
   unless specifically defined for the application.

   Independent requests:

      Independent requests can generally be given equal treatment when
      making throttling decisions, unless otherwise indicated by
      application requirements or local policy.

   Session-initiating requests:

      Session-initiating requests often represent more work than
      independent or intra-session requests.  Moreover, session-
      initiating requests are typically followed by other session-
      related requests.  Since the main objective of the overload
      control is to reduce the total number of requests sent to the
      overloaded entity, throttling decisions might favor allowing
      intra-session requests over session-initiating requests.  In the
      absence of local policies or application specific requirements to
      the contrary, Individual session-initiating requests can be given
      equal treatment when making throttling decisions.

   Correlated session-initiating requests:



Korhonen, et al.         Expires April 24, 2015                [Page 37]

Internet-Draft                    DOIC                      October 2014


      A Request that results in a new binding, where the binding is used
      for routing of subsequent session-initiating requests to the same
      server, represents more work load than other requests.  As such,
      these requests might be throttled more frequently than other
      request types.

   Pseudo-session requests:

      Throttling decisions for pseudo-session requests can take into
      consideration where individual requests fit into the overall
      sequence of requests within the pseudo session.  Requests that are
      earlier in the sequence might be throttled more aggressively than
      requests that occur later in the sequence.

   Intra-session requests:

      There are two classes of intra-sessions requests.  The first class
      consists of requests that terminate a session.  The second class
      comprises requests that are used by the Diameter client and server
      to maintain the ongoing session state.  Implementors and operators
      may choose to throttle session-terminating requests less
      aggressively in order to gracefully terminate sessions, allow
      clean-up of the related resources (e.g. session state) and avoid
      the need for additional intra-session requests.  Favoring session-
      termination requests may reduce the session management impact on
      the overloaded entity.  The default handling of other intra-
      session requests might be to treat them equally when making
      throttling decisions.  There might also be application level
      considerations whether some request types are favored over others.

Authors' Addresses

   Jouni Korhonen (editor)
   Broadcom
   Porkkalankatu 24
   Helsinki  FIN-00180
   Finland

   Email: jouni.nospam@gmail.com


   Steve Donovan (editor)
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: srdonovan@usdonovans.com



Korhonen, et al.         Expires April 24, 2015                [Page 38]

Internet-Draft                    DOIC                      October 2014


   Ben Campbell
   Oracle
   7460 Warren Parkway
   Frisco, Texas  75034
   United States

   Email: ben@nostrum.com


   Lionel Morand
   Orange Labs
   38/40 rue du General Leclerc
   Issy-Les-Moulineaux Cedex 9  92794
   France

   Phone: +33145296257
   Email: lionel.morand@orange.com


































Korhonen, et al.         Expires April 24, 2015                [Page 39]

--------------030209050001040106090500--


From nobody Tue Oct 21 22:49:06 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5BABB1A8AB1 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:11:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v6IfQUIpfwXS for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 22:11:41 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 65C271A8AAD for <dime@ietf.org>; Tue, 21 Oct 2014 22:11:41 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:53937 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgoCw-0000pT-D8 for dime@ietf.org; Tue, 21 Oct 2014 22:11:39 -0700
Message-ID: <54473C8A.5030801@usdonovans.com>
Date: Wed, 22 Oct 2014 07:11:38 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------000300020505070805010105"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/refnqRWm7msDz3st3BGE1ezqB5o
X-Mailman-Approved-At: Tue, 21 Oct 2014 22:49:05 -0700
Subject: [Dime] Resolution to issue 69 and part of issue 23
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 05:11:48 -0000

This is a multi-part message in MIME format.
--------------000300020505070805010105
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I added Lionel's proposed wording to the reporting node sub section of 
the overload report handling section.

I also modified the first paragraph below and added the other two 
paragraphs.  Those changes were not directly related to issue 69 but 
were needed in this section.

           The reporting node MAY update the overload report with new 
reduction
           percentages.

           The reacting node MAY extend the validatity duration for an 
existing
           overload report by sending a OLR with either the same or a new
           validity duration value.  When doing so, the reacting node 
MUST increase the
           sequence number in the new OLR sent.

           When sending an overload report with new values in any of the 
sub AVPs
           for an existing overload condition, the reporting node MUST 
increase the
           sequence number in the new OLR sent.

I have attached the diff file.

Regards,

Steve




--------------000300020505070805010105
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 34</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 34</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="delete">22</span></td><td> </td><td class="rblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="delete">23</span></td><td> </td><td class="rblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="delete">23</span></td><td> </td><td class="rblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">4</span></td><td> </td><td class="rblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">3</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="delete">5</span></td><td> </td><td class="rblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="insert">4</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="delete">7</span></td><td> </td><td class="rblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">8</span></td><td> </td><td class="rblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  2<span class="delete">9</span></td><td> </td><td class="rblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  2<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  3<span class="delete">1</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  3<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  3<span class="delete">2</span></td><td> </td><td class="rblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  3<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="delete">3</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td> </td><td class="right">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  35</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 18, line 34</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 18, line 34</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that a reacting node advertises support for the host and</td><td> </td><td class="right">      Note that a reacting node advertises support for the host and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm report types by including the OC-Supported-Features AVP in</td><td> </td><td class="right">      realm report types by including the OC-Supported-Features AVP in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the request.  Support for other report types must be explicitly</td><td> </td><td class="right">      the request.  Support for other report types must be explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td> </td><td class="right">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If OLR is for a new overload condition and there is no unexpired</td><td> </td><td class="right">   If OLR is for a new overload condition and there is no unexpired</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report for previous overload conditions at any reacting node</td><td> </td><td class="right">   overload report for previous overload conditions at any reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   then the reporting node MAY set the sequence number to any value.</td><td> </td><td class="right">   then the reporting node MAY set the sequence number to any value.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The <span class="delete">reporting</span> node MAY update the overload report with new reduction</td><td> </td><td class="rblock">   The <span class="insert">reacting</span> node MAY update the overload report with new reduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   percentages.</td><td> </td><td class="rblock">   percentages.  When <span class="insert">doing so,</span> the <span class="insert">reacting</span> node MUST increase the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock">   sequence number in the new OLR sent.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reporting node MAY extend the validatity duration for an existing</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload report by sending a OLR with either the same or a new</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   validity duration value.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   When <span class="delete">sending an overload report with new values in any of the sub</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   AVPs for an existing overload condition,</span> the <span class="delete">reporting</span> node MUST</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   increase the sequence number in the new OLR sent.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When generating sequence numbers for new overload conditions, the new</td><td> </td><td class="right">   When generating sequence numbers for new overload conditions, the new</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number MUST be greater than any sequence number in an active</td><td> </td><td class="right">   sequence number MUST be greater than any sequence number in an active</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (unexpired) overload report previously sent by the reporting node.</td><td> </td><td class="right">   (unexpired) overload report previously sent by the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This property MUST hold over a reboot of the reporting node.</td><td> </td><td class="right">   This property MUST hold over a reboot of the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">                                                                         </span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When a reporting node sends an OLR, it effectively delegates any</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   necessary throttling to downstream nodes.  Therefore, the reporting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   node SHOULD NOT apply throttling to the set of messages to which the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   OLR applies.  That is, the same candidate set of messages SHOULD NOT</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   be throttled multiple times.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   However, when the reporting node sends and OLR downstream, it MAY</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   still be responsible to apply other abatement methods, such as</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   diversion, or request throttling requests for other reasons.  For</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   example, an agent or server might have a configured rate limit for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   each client, and throttle requests that exceed that limit, even if</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   such requests had already been candidates for throttling by</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   downstream nodes.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      All OLRs sent have an expiration time calculated by adding the</td><td> </td><td class="right">      All OLRs sent have an expiration time calculated by adding the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      validity-duration contained in the OLR to the time the message was</td><td> </td><td class="right">      validity-duration contained in the OLR to the time the message was</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      sent.  Transit time for the OLR can be safely ignored.  The</td><td> </td><td class="right">      sent.  Transit time for the OLR can be safely ignored.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reporting node can ensure that all reacting nodes have received</td><td> </td><td class="right">      reporting node can ensure that all reacting nodes have received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the OLR by continuing to send it in answer messages until the</td><td> </td><td class="right">      the OLR by continuing to send it in answer messages until the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expiration time for all OLRs sent for that overload contition have</td><td> </td><td class="right">      expiration time for all OLRs sent for that overload contition have</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expired.</td><td> </td><td class="right">      expired.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This document assumes that there is a single source for realm-reports</td><td> </td><td class="right">   This document assumes that there is a single source for realm-reports</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for a given realm, or that if multiple nodes can send realm reports,</td><td> </td><td class="right">   for a given realm, or that if multiple nodes can send realm reports,</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 12 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>36 lines changed or deleted</i></th><th><i> </i></th><th><i>14 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The s
 et of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttlin
 g can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by
 \n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and
  a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs
  apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts woul
 d do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that co
 ntained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported
 -Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   de
 termine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the l
 oss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature 
 AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  A
 ny semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condi
 tion Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AV
 P.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n
 \nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to ind
 icate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new value
 s for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X     
                              Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n     
             standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC feature
 s include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate su
 pport for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                    
   October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorit
 hm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n
 \n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a gi
 ven pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity D
 uration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes als
 o delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support o
 f the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the 
 existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP o
 f the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\
 n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacti
 ng\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer v
 alid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic red
 uction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Suppo
 rted-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for 
 new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      All OLRs sent have an expiration time calculated by adding the
 \n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequ
 ence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that
  are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features
  (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of t
 raffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n
    4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports. 
  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the request
 ed percentage of new requests will be given abatement\n      treatment.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded
  node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the appl
 ication and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n           
                    * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information n
 ecessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\
 n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   
 between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in t
 he default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload
  report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the r
 eceived message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for diff
 erent "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Valu
 es greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +------------------
 --------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x   
    Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the req
 uest\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the r
 equest would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Ove
 rload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may 
 wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n
 \n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  Thi
 s\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within th
 at peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always use
 d in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other so
 urces from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust req
 uirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forward
 ing a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substant
 ial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo,
  V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Ov
 erload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A se
 parate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents
  with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  Th
 is discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each
  other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discus
 sed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.
   For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions la
 ter in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session 
 requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There ar
 e cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n  
     the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can gene
 rally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      f
 or routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter clien
 t and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: s
 rdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                         
                                          Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  
 Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publi
 cation of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .
   11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs 
 . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . .
  . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  D
 IAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solutio
 n defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 
 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of 
 AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the 
 overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on beha
 lf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n
    (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning
  of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   re
 ceiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n
    While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existi
 ng application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have 
 fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows 
 for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenari
 o, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for po
 ssible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page
  8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host 
 reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application
 .  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n
    overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibil
 ity\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional i
 nformation\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )
 --_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the client
 s when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled
  by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatemen
 t algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Su
 pported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feat
 ure-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the followin
 g OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within
  OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when 
 receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow 
 window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatemen
 t, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [
 Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding D
 iameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP 
 in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reporting node MAY update the overload report with new reduction\n   percentages.\n\n   The reporting node MAY extend the validatity duration for an existing\n   overload report by sending a OLR with either the same or a new\n   validity duration value.\n\n   When sending an overload report with new values in any of the sub\n   AVPs for an existing overload condition, the reporting node MUST\n   increase the sequence number in the new OLR sent.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report
  previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to w
 hich the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n   be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\
 n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft           
          DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST d
 efine the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  O
 verview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of
  request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       rout
 ing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting 
 node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following 
 concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n 
      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter app
 lication designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abate
 ment algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   p
 rocess with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the
  event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   re
 port previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  S
 ection 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\
 n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      
 Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and req
 uests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the 
 OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR   
               TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is r
 elevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non sup
 porting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the S
 pecification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n  
  authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent
  to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   construct
 ed response to a pending request prior to acting on the\n   overload report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.
 \n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant
  node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not
 \n   remove the need for these other protection strategies.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are truste
 d to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for over
 load control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nir
 av Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n     
          draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the ov
 erload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should 
 clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n     
  Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n
    For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                     
  October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions
  assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when
  a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions t
 hat occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n  
     the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 24, 2015  
               [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-sess
 ion requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      rel
 ated requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo
 -session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may redu
 ce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineau
 x Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------000300020505070805010105--


From nobody Tue Oct 21 23:33:23 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B3861A6F85 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:33:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u9b0dBnIjDht for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:33:18 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E9E721A01EC for <dime@ietf.org>; Tue, 21 Oct 2014 23:33:18 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54142 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgpTu-0006AZ-Cw; Tue, 21 Oct 2014 23:33:16 -0700
Message-ID: <54474FA9.3040300@usdonovans.com>
Date: Wed, 22 Oct 2014 08:33:13 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com>
In-Reply-To: <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/X87GgMdPVGctBDqcm1aQCl6eYWg
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 06:33:21 -0000

Ben,

I missed the other comment.  The MUST wording you suggest will be in the 
next revision of the -04 draft.

Yes on your question about the SHOULD.  Do you think we need wording 
saying that implementations can make other choices if they have good reason?

Steve

On 10/21/14, 4:46 PM, Ben Campbell wrote:
> Did we intend to include anything about Lionel's suggestion on UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make sure we didn't forget to consider it.)
>
> I also have one comment inline. Otherwise it looks good to me.
>
>
>> On Oct 21, 2014, at 3:27 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>
>> I have incorporated the following text into the document in the existing, previously empty, section 7. Error Response Codes.
>>
>> I will wait until tomorrow to close issue 85 to allow for discussion of the proposed wording.
>>
>> I have attached the diff as this wording is not in the draft.
>>
>> Regards,
>>
>> Steve
>>
>> ---
>>
>>     When a DOIC node rejects a Diameter request due to throttling, the
>>     DOIC node needs to select the appropriate error response code.
> Do we have separate text saying the node MUST send an error? If not, I suggest changing this to "... MUST respond with an appropriate error response code."
>
> The change from "the" to "an" was intentional. Since we are using SHOULD below for the actual choice, I assume we intend to leave room for an implementation to make other choices if it has a good reason.
>
>
>>   This
>>     determination is made based on the probability of the request
>>     succeeding if retried on a different path.
>>
>>     The DIAMETER_TOO_BUSY response code SHOULD be used when the request
>>     is likely to succeed on a different path.
>>
>>        For instance, if the request arrived at the reporting node without
>>        a Destination-Host AVP then the reporting node might determine
>>        that there is an alternative Diameter node that could successfully
>>        process the request and that retrying the transaction would not
>>        negatively impact the reporting node.
>>
>>     The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>     indicate that the request should not be retried.  This is used when
>>     the request is not likely to succeed on a different path and retrying
>>     would consume valuable resources during an occurance of overload.
>>
>>        For instance, if the request arrived at the reporting node with a
>>        Destination-Host AVP populated with its own Diameter identity then
>>        the reporting node can assume that retrying the request would
>>        result in it coming to the same reporting node.
>>
>>        A second example is when an agent that supports the DOIC solution
>>        is preforming the role of a reacting node for a non supporting
>>        client.  Requests that are rejected as a result of DOIC throttling
>>        in this scenario would generally be rejected with a
>>        DIAMETER_UNABLE_TO_COMPLY response code.
>>
>>
>>
>>
>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>> I agree.
>>>
>>> Lionel
>>>
>>> Envoyé depuis mon Sony Xperia SP d'Orange
>>>
>>> ---- Ben Campbell a écrit ----
>>>
>>>
>>>
>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> <lionel.morand@orange.com>
>>>>   wrote:
>>>>
>>>> Hi,
>>>>
>>>> I think that:
>>>> - TOO_BUSY should be restricted to server answer
>>>>
>>> One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.
>>>
>>>
>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no retransmission is required
>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.
>>>>
>>>> As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.
>>>>
>>>> Regards,
>>>>
>>>> Lionel
>>>>
>>>> -----Message d'origine-----
>>>> De : DiME [
>>>> mailto:dime-bounces@ietf.org
>>>> ] De la part de Ben Campbell
>>>> Envoyé : lundi 20 octobre 2014 19:10
>>>> À : Steve Donovan
>>>> Cc :
>>>> dime@ietf.org
>>>>
>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>
>>>> I agree that we should generalize these, but I think the direction is not quite right. More inline:
>>>>
>>>>
>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan <srdonovan@usdonovans.com>
>>>>>   wrote:
>>>>>
>>>>> We came to the following agreements on error responses:
>>>>>
>>>>> - Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>
>>>>> - Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>
>>>>> I propose that we generalize this to the following:
>>>>>
>>>>> - Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>
>>>>> - Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
>>>>>
>>>> I don't think we should state this in terms of reaction and reporting nodes. I think we should generalize to expected behavior. Also, in the case where the downstream node does not support DOIC, I'm not sure it makes sense to say the throttling node is really a reporting node (for that particular relationship.)
>>>>
>>>> My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)
>>>>
>>>> Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.
>>>>
>>>>
>>>>
>>>>> This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>>>
>>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.
>>>>>
>>>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>>>
>>>>> Regards,
>>>>>
>>>>> Steve
>>>>>
>>>>> _______________________________________________
>>>>> DiME mailing list
>>>>>
>>>>> DiME@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>> _______________________________________________
>>>> DiME mailing list
>>>>
>>>> DiME@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>
>>>>
>>>> _________________________________________________________________________________________________________________________
>>>>
>>>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>>>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>>
>>>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>>>> they should not be distributed, used or copied without authorisation.
>>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>>> Thank you.
>>>>
>>>>
>>> _________________________________________________________________________________________________________________________
>>>
>>> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
>>> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>
>>> This message and its attachments may contain confidential or privileged information that may be protected by law;
>>> they should not be distributed, used or copied without authorisation.
>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>> Thank you.
>>>
>>>
>>>
>> <Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html>
>


From nobody Tue Oct 21 23:35:26 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BA9501A897B for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:35:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.12
X-Spam-Level: 
X-Spam-Status: No, score=-1.12 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xMY2Jd6GS-op for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:35:20 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ADF7C1A6F9D for <dime@ietf.org>; Tue, 21 Oct 2014 23:35:20 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54143 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgpVr-0007WS-GH for dime@ietf.org; Tue, 21 Oct 2014 23:35:18 -0700
Message-ID: <54474FFF.50809@usdonovans.com>
Date: Wed, 22 Oct 2014 08:34:39 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: dime@ietf.org
References: <E194C2E18676714DACA9C3A2516265D2026E8B37@FR712WXCHMBA12.zeu.alcatel-lucent.com>
In-Reply-To: <E194C2E18676714DACA9C3A2516265D2026E8B37@FR712WXCHMBA12.zeu.alcatel-lucent.com>
Content-Type: multipart/alternative; boundary="------------030202050209080002020508"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/B-u2M-x55qM0N93b7gdQcc69YtI
Subject: Re: [Dime] Resolution of issue #73 clarifications on  M-bit
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 06:35:23 -0000

This is a multi-part message in MIME format.
--------------030202050209080002020508
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Jean-Jacques,

I have made changes and closed issue #73.

Please look at the version of the draft I sent this morning and see if 
the changes I made for this issue are acceptable.  If not, please let me 
know and I'll update accordingly.

Regards,

Steve

On 10/21/14, 11:25 PM, TROTTIN, JEAN-JACQUES (JEAN-JACQUES) wrote:
>
> Dear all
>
> In reference to the Lionel's minutes on issue #73 Clarifications on 
> the M-bit:
>
> Summary: Mbit is mentioned in different places in the 03 draft 
> (sections 4.3, 6 and 6.8). It is proposed clarifications to ensure a 
> good consistency between the different sections.
>
> Output of the discussion:
>
> It is agreed that the draft should just refer to the RFC6733 for 
> everything regarding the M-bit setting. How and when to set the M-bit 
> is defined in the base protocol.
>
> I will follow the output of the discussion, taking into account that I 
> think we still need to indicate that for existing applications, the 
> Mbit should be cleared for backward compatibility.
>
> Hereafter the different places where M-bit is mentioned with the 
> proposed changes
>
> In 4.3.  Protocol Extensibility
>
> Existing text:
>
>    It should be noted that [RFC6733] defined Grouped AVP extension
>
> mechanisms apply.  This allows, for example, defining a new feature
>
> that is mandatory to be understood even when piggybacked on an
>
> existing applications.  More specifically, the sub-AVPs inside the
>
> OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.
>
> However, when overload control AVPs are piggybacked on top of an
>
> existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.
>
> Proposal: To keep the reference to RFC 6733;  the text about  existing 
> applications is removed as overlapping with the 6.8 one.
>
> It should be noted that [RFC6733] defined Grouped AVP extension
>
> mechanisms apply.
>
> In 6.  Attribute Value Pairs
>
> Existing text
>
> This section describes the encoding and semantics of the Diameter
>
> Overload Indication Attribute Value Pairs (AVPs) defined in this
>
> document.
>
> When added to existing commands, both OC-Feature-Vector and OC-OLR
>
> AVPs SHOULD have the M-bit flag cleared to avoid backward
>
> compatibility issues.
>
> A new application specification can incorporate the overload control
>
> mechanism specified in this document by making it mandatory to
>
> implement for the application and referencing this specification
>
> normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs
>
> reused in newly defined Diameter applications SHOULD have the M-bit
>
> flag set.  However, it is the responsibility of the Diameter
>
> application designers to define how overload control mechanisms works
>
> on that application.
>
> Proposal: to remove two paragraphs as overlapping with 6.8**
>
>    This section describes the encoding and semantics of the Diameter
>
> Overload Indication Attribute Value Pairs (AVPs) defined in this
>
> document.
>
> In 6.8.  Attribute Value Pair flag rules
>
> Existing text
>
> As described in the Diameter base protocol [RFC6733], the M-bit
>
> setting for a given AVP is relevant to an application and each
>
> command within that application that includes the AVP.
>
> The Diameter overload control AVPs SHOULD always be sent with the
>
> M-bit cleared when used within existing Diameter applications to
>
> avoid backward compatibility issues.  Otherwise, when reused in newly
>
> defined Diameter applications, the DOC related AVPs SHOULD have the
>
> M-bit set.
>
> Proposal:**To keep the reference to RFC 6733 and the particular case 
> of existing applications
>
> **
>
> As described in the Diameter base protocol [RFC6733], the M-bit
>
> setting for a given AVP is relevant to an application and each
>
> command within that application that includes the AVP. However, the
>
> Diameter overload control AVPs SHOULD always be sent with the
>
> M-bit cleared when used within existing Diameter applications to
>
> avoid backward compatibility issues.
>
> If OK, I will update the proposal for the issue #73 in the Dime Tracker
>
> Best regards
>
> JJacques
>
>
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime


--------------030202050209080002020508
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Jean-Jacques,<br>
    <br>
    I have made changes and closed issue #73.<br>
    <br>
    Please look at the version of the draft I sent this morning and see
    if the changes I made for this issue are acceptable.&nbsp; If not, please
    let me know and I'll update accordingly.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
    <div class="moz-cite-prefix">On 10/21/14, 11:25 PM, TROTTIN,
      JEAN-JACQUES (JEAN-JACQUES) wrote:<br>
    </div>
    <blockquote
cite="mid:E194C2E18676714DACA9C3A2516265D2026E8B37@FR712WXCHMBA12.zeu.alcatel-lucent.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Texte brut Car";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:Consolas;}
span.TextebrutCar
	{mso-style-name:"Texte brut Car";
	mso-style-priority:99;
	mso-style-link:"Texte brut";
	font-family:Consolas;}
span.EmailStyle19
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="FR">Dear all <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="FR"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal">In reference to the Lionel&#8217;s minutes on&nbsp;
          issue #73 Clarifications on the M-bit:
          <o:p></o:p></p>
        <p class="MsoPlainText" style="margin-left:36.0pt">Summary: Mbit
          is mentioned in different places in the 03 draft (sections
          4.3, 6 and 6.8). It is proposed clarifications to ensure a
          good consistency between the different sections.
          <o:p></o:p></p>
        <p class="MsoPlainText" style="margin-left:36.0pt"><o:p>&nbsp;</o:p></p>
        <p class="MsoPlainText" style="margin-left:36.0pt">Output of the
          discussion:<o:p></o:p></p>
        <p class="MsoPlainText" style="margin-left:36.0pt">It is agreed
          that the draft should just refer to the RFC6733 for everything
          regarding the M-bit setting. How and when to set the M-bit is
          defined in the base protocol.<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">I will follow the output of the discussion,
          taking into account that I think we still need to indicate
          that for existing applications, the Mbit should be cleared for
          backward compatibility.
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Hereafter the different places where M-bit
          is mentioned with the proposed changes<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">In 4.3.&nbsp; Protocol Extensibility<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Existing text: <o:p></o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;&nbsp;It
            should be noted that [RFC6733] defined Grouped AVP extension<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            mechanisms apply.&nbsp; This allows, for example, defining a new
            feature<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            that is mandatory to be understood even when piggybacked on
            an<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            existing applications.&nbsp; More specifically, the sub-AVPs
            inside the<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            However, when overload control AVPs are piggybacked on top
            of an<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            existing applications, setting M-bit in sub-AVPs is NOT
            RECOMMENDED.</span><o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Proposal: To keep the reference to RFC
          6733;&nbsp; the text about&nbsp; existing applications is removed as&nbsp;
          overlapping with the 6.8 one.<o:p></o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            It should be noted that [RFC6733] defined Grouped AVP
            extension<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            mechanisms apply.
            <o:p></o:p></span></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal">In 6.&nbsp; Attribute Value Pairs<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Existing text<o:p></o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            This section describes the encoding and semantics of the
            Diameter<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            Overload Indication Attribute Value Pairs (AVPs) defined in
            this<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            document.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            When added to existing commands, both OC-Feature-Vector and
            OC-OLR<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            AVPs SHOULD have the M-bit flag cleared to avoid backward<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            compatibility issues.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            A new application specification can incorporate the overload
            control<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            mechanism specified in this document by making it mandatory
            to<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            implement for the application and referencing this
            specification<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            normatively.&nbsp; In such a case, the OC-Feature-Vector and
            OC-OLR AVPs<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            reused in newly defined Diameter applications SHOULD have
            the M-bit<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            flag set.&nbsp; However, it is the responsibility of the Diameter<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            application designers to define how overload control
            mechanisms works<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            on that application.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Proposal: to remove two paragraphs as
          overlapping with 6.8<b><span style="font-size:12.0pt">
              <o:p></o:p></span></b></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;&nbsp;This
            section describes the encoding and semantics of the Diameter<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            Overload Indication Attribute Value Pairs (AVPs) defined in
            this<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            document.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal">In 6.8.&nbsp; Attribute Value Pair flag rules<span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal">Existing text<o:p></o:p></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            As described in the Diameter base protocol [RFC6733], the
            M-bit<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            setting for a given AVP is relevant to an application and
            each<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            command within that application that includes the AVP.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            The Diameter overload control AVPs SHOULD always be sent
            with the<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            M-bit cleared when used within existing Diameter
            applications to<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            avoid backward compatibility issues.&nbsp; Otherwise, when reused
            in newly<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            defined Diameter applications, the DOC related AVPs SHOULD
            have the<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            M-bit set.<o:p></o:p></span></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Proposal:<b><span style="font-size:12.0pt">
            </span></b>To keep the reference to RFC 6733 and the
          particular case of existing applications
          <o:p></o:p></p>
        <p class="MsoNormal"><b><span style="font-size:12.0pt"><o:p>&nbsp;</o:p></span></b></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            As described in the Diameter base protocol [RFC6733], the
            M-bit<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            setting for a given AVP is relevant to an application and
            each<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            command within that application that includes the AVP.
            However, the<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            Diameter overload control AVPs SHOULD always be sent with
            the<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            M-bit cleared when used within existing Diameter
            applications to<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:&quot;Courier New&quot;">&nbsp;&nbsp;
            avoid backward compatibility issues.<o:p></o:p></span></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">If OK, I will update the proposal for the
          issue #73 in the Dime Tracker
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">Best regards<o:p></o:p></p>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal">JJacques <o:p></o:p></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
DiME mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DiME@ietf.org">DiME@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/dime">https://www.ietf.org/mailman/listinfo/dime</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>

--------------030202050209080002020508--


From nobody Tue Oct 21 23:55:06 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 91A501A6F85 for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:55:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HJepfBlgKENW for <dime@ietfa.amsl.com>; Tue, 21 Oct 2014 23:55:04 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 898AC1A1A90 for <dime@ietf.org>; Tue, 21 Oct 2014 23:55:04 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54264 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1Xgpoz-0007xN-FB; Tue, 21 Oct 2014 23:55:02 -0700
Message-ID: <544754C5.7070809@usdonovans.com>
Date: Wed, 22 Oct 2014 08:55:01 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Ben Campbell <ben@nostrum.com>
References: <5444D8F9.9040906@usdonovans.com> <D728C623-D8EE-4767-BC74-52233429E1FC@nostrum.com>
In-Reply-To: <D728C623-D8EE-4767-BC74-52233429E1FC@nostrum.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/we2PrWEObp20HFj2BK5dhJabYzc
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Resolution to issues 70 and 74
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 06:55:05 -0000

The other way of wording this would be as follows:

           A reporting node MUST NOT send overload reports of a type 
that has not been
           advertized as supported by the reacting node.

Which is an explicit double negation that is necessary to get the point 
across.  The above wording will be in the next revision of the draft.  
I'm open to other wording if someone has a cleaner way of getting this 
requirement across.

Regards,

Steve

On 10/20/14, 11:17 PM, Ben Campbell wrote:
> Slight normative language quibble:
>
> "MUST only" is a bit of a strange construction from a 2119 perspective, in that it implies a negation without an explicit NOT. I think we really mean "MUST NOT unless...".
>
>
>> On Oct 20, 2014, at 4:42 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>
>> I have removed the examples section and moved the "Application Considerations" section to an appendix.
>>
>> For issue 70 I also added the following wording to section 4.2.3:
>>
>>     A reporting node MUST only send overload reports of a type advertised
>>     as supported by the reacting node.
>>
>>        Note that a reacting node advertises support for the host and
>>        realm report types by including the OC-Supported-Features AVP in
>>        the request.  Support for other report types must be explicitly
>>        indicated by a new feature bit in the OC-Feature-Vector AVP.
>>
>>
>>
>> The diff file is attached.
>>
>> Regards,
>>
>> Steve
>> <Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html>_______________________________________________
>> DiME mailing list
>> DiME@ietf.org
>> https://www.ietf.org/mailman/listinfo/dime
>


From nobody Wed Oct 22 01:03:42 2014
Return-Path: <jean-jacques.trottin@alcatel-lucent.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4AA781A8AE5 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 01:03:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Level: 
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BUY3EtdwsCCp for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 01:03:30 -0700 (PDT)
Received: from smtp-fr.alcatel-lucent.com (fr-hpida-esg-02.alcatel-lucent.com [135.245.210.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3FC421A8AF8 for <dime@ietf.org>; Wed, 22 Oct 2014 01:03:29 -0700 (PDT)
Received: from fr712usmtp2.zeu.alcatel-lucent.com (unknown [135.239.2.42]) by Websense Email Security Gateway with ESMTPS id B8AF498E7FEB0; Wed, 22 Oct 2014 08:03:23 +0000 (GMT)
Received: from FR712WXCHHUB03.zeu.alcatel-lucent.com (fr712wxchhub03.zeu.alcatel-lucent.com [135.239.2.74]) by fr712usmtp2.zeu.alcatel-lucent.com (GMO) with ESMTP id s9M83GX6000590 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 22 Oct 2014 10:03:25 +0200
Received: from FR712WXCHMBA12.zeu.alcatel-lucent.com ([169.254.8.50]) by FR712WXCHHUB03.zeu.alcatel-lucent.com ([135.239.2.74]) with mapi id 14.03.0195.001; Wed, 22 Oct 2014 10:03:21 +0200
From: "TROTTIN, JEAN-JACQUES (JEAN-JACQUES)" <jean-jacques.trottin@alcatel-lucent.com>
To: Steve Donovan <srdonovan@usdonovans.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] Resolution of issue #73 clarifications on  M-bit
Thread-Index: AQHP7cJkLolqcTksaUanLWryhCNWDZw7vAkw
Date: Wed, 22 Oct 2014 08:03:21 +0000
Message-ID: <E194C2E18676714DACA9C3A2516265D2026E8C54@FR712WXCHMBA12.zeu.alcatel-lucent.com>
References: <E194C2E18676714DACA9C3A2516265D2026E8B37@FR712WXCHMBA12.zeu.alcatel-lucent.com> <54474FFF.50809@usdonovans.com>
In-Reply-To: <54474FFF.50809@usdonovans.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [135.239.27.41]
Content-Type: multipart/alternative; boundary="_000_E194C2E18676714DACA9C3A2516265D2026E8C54FR712WXCHMBA12z_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/RnYf7EiDBJ1JHe-NvgMEzWWt2mw
Subject: Re: [Dime] Resolution of issue #73 clarifications on  M-bit
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 08:03:39 -0000

--_000_E194C2E18676714DACA9C3A2516265D2026E8C54FR712WXCHMBA12z_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi Steve

Comments  on your changes

For 4.3 Protocol Extensibility, I am OK

For 6.  Attribute Value Pairs, I considered the existing text of 2 paragrap=
hs was overlapping with the one in 6.8.
When we duplicate text but with  wording differences, it may rise ambiguiti=
es with the questioning of why the text is different.

So I prefer to have one place to deal with M-bit and 6.8 seems for me the r=
ight place as dealing with AVP flag rules (so covering M-bit), and we do no=
t need to say something in 6.

In 6.8, my proposal is to remove
   " Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set."

This point was discussed and it depends on how the application deals with D=
iameter overaload. if it is optional the MBit is not set . So here  as acco=
rding to the output discussion, only the reference to RFC 6733 is sufficien=
t (1st paragraph). We nevertheless keep the statement for existing applicat=
ions.

Best regards

JJacques

De : DiME [mailto:dime-bounces@ietf.org] De la part de Steve Donovan
Envoy=E9 : mercredi 22 octobre 2014 08:35
=C0 : dime@ietf.org
Objet : Re: [Dime] Resolution of issue #73 clarifications on M-bit

Jean-Jacques,

I have made changes and closed issue #73.

Please look at the version of the draft I sent this morning and see if the =
changes I made for this issue are acceptable.  If not, please let me know a=
nd I'll update accordingly.

Regards,

Steve
On 10/21/14, 11:25 PM, TROTTIN, JEAN-JACQUES (JEAN-JACQUES) wrote:
Dear all

In reference to the Lionel's minutes on  issue #73 Clarifications on the M-=
bit:

Summary: Mbit is mentioned in different places in the 03 draft (sections 4.=
3, 6 and 6.8). It is proposed clarifications to ensure a good consistency b=
etween the different sections.



Output of the discussion:

It is agreed that the draft should just refer to the RFC6733 for everything=
 regarding the M-bit setting. How and when to set the M-bit is defined in t=
he base protocol.

I will follow the output of the discussion, taking into account that I thin=
k we still need to indicate that for existing applications, the Mbit should=
 be cleared for backward compatibility.

Hereafter the different places where M-bit is mentioned with the proposed c=
hanges

In 4.3.  Protocol Extensibility

Existing text:
   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.  More specifically, the sub-AVPs inside the
   OC-Supported-Features and OC-OLR AVP MAY have the M-bit set.
   However, when overload control AVPs are piggybacked on top of an
   existing applications, setting M-bit in sub-AVPs is NOT RECOMMENDED.

Proposal: To keep the reference to RFC 6733;  the text about  existing appl=
ications is removed as  overlapping with the 6.8 one.

   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.


In 6.  Attribute Value Pairs

Existing text
   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.

   When added to existing commands, both OC-Feature-Vector and OC-OLR
   AVPs SHOULD have the M-bit flag cleared to avoid backward
   compatibility issues.

   A new application specification can incorporate the overload control
   mechanism specified in this document by making it mandatory to
   implement for the application and referencing this specification
   normatively.  In such a case, the OC-Feature-Vector and OC-OLR AVPs
   reused in newly defined Diameter applications SHOULD have the M-bit
   flag set.  However, it is the responsibility of the Diameter
   application designers to define how overload control mechanisms works
   on that application.


Proposal: to remove two paragraphs as overlapping with 6.8
   This section describes the encoding and semantics of the Diameter
   Overload Indication Attribute Value Pairs (AVPs) defined in this
   document.


In 6.8.  Attribute Value Pair flag rules

Existing text
   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP.

   The Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.  Otherwise, when reused in newly
   defined Diameter applications, the DOC related AVPs SHOULD have the
   M-bit set.

Proposal: To keep the reference to RFC 6733 and the particular case of exis=
ting applications

   As described in the Diameter base protocol [RFC6733], the M-bit
   setting for a given AVP is relevant to an application and each
   command within that application that includes the AVP. However, the
   Diameter overload control AVPs SHOULD always be sent with the
   M-bit cleared when used within existing Diameter applications to
   avoid backward compatibility issues.

If OK, I will update the proposal for the issue #73 in the Dime Tracker

Best regards

JJacques




_______________________________________________

DiME mailing list

DiME@ietf.org<mailto:DiME@ietf.org>

https://www.ietf.org/mailman/listinfo/dime


--_000_E194C2E18676714DACA9C3A2516265D2026E8C54FR712WXCHMBA12z_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Texte brut Car";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:Consolas;
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"Pr=E9format=E9 HTML Car";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
span.TextebrutCar
	{mso-style-name:"Texte brut Car";
	mso-style-priority:99;
	mso-style-link:"Texte brut";
	font-family:Consolas;}
span.EmailStyle19
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.PrformatHTMLCar
	{mso-style-name:"Pr=E9format=E9 HTML Car";
	mso-style-priority:99;
	mso-style-link:"Pr=E9format=E9 HTML";
	font-family:Consolas;
	color:black;}
span.EmailStyle22
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3D"white" lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Hi Steve<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Comments &nbsp;on your=
 changes<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">For 4.3 </span>Protoco=
l Extensibility<span style=3D"color:#1F497D">, I am OK
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">For </span>6.&nbsp; At=
tribute Value Pairs, I considered the existing text of 2 paragraphs was ove=
rlapping with the one in 6.8. &nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">When we duplicate text but with &nbsp;wording differ=
ences, it may rise ambiguities with the questioning of why the text is diff=
erent.
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">So I prefer to have one place to deal with M-bit and=
 6.8 seems for me the right place as dealing with AVP flag rules (so coveri=
ng M-bit), and we do not need to say something in 6.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">In 6.8, my proposal is to remove <o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp;&#8220; Otherwise, when reused in =
newly<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp; defined Diameter applications, the DOC =
related AVPs SHOULD have the<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp; M-bit set.&#8221;<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">This point was discussed and it depends on how the a=
pplication deals with Diameter overaload. if it is optional the MBit is not=
 set . So here &nbsp;as according to the output discussion, only the refere=
nce to RFC 6733 is sufficient (1<sup>st</sup>
 paragraph). We nevertheless keep the statement for existing applications.<=
o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Best regards<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">JJacques <span style=3D"color:#1F497D"><o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">De&nbsp;:</span></b>=
<span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-s=
erif&quot;;color:windowtext"> DiME [mailto:dime-bounces@ietf.org]
<b>De la part de</b> Steve Donovan<br>
<b>Envoy=E9&nbsp;:</b> mercredi 22 octobre 2014 08:35<br>
<b>=C0&nbsp;:</b> dime@ietf.org<br>
</span><b><span lang=3D"FR" style=3D"font-size:10.0pt;font-family:&quot;Tah=
oma&quot;,&quot;sans-serif&quot;;color:windowtext">Objet&nbsp;:</span></b><=
span lang=3D"FR" style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&=
quot;sans-serif&quot;;color:windowtext"> Re: [Dime] Resolution of issue #73=
 clarifications
 on M-bit<o:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"FR"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Jean-Jacques,<br>
<br>
I have made changes and closed issue #73.<br>
<br>
Please look at the version of the draft I sent this morning and see if the =
changes I made for this issue are acceptable.&nbsp; If not, please let me k=
now and I'll update accordingly.<br>
<br>
Regards,<br>
<br>
Steve<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">On 10/21/14, 11:25 PM, TROTTIN, JEAN-JACQUES (JEAN-J=
ACQUES) wrote:<o:p></o:p></p>
</div>
<blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt">
<p class=3D"MsoNormal"><span lang=3D"FR">Dear all </span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"FR">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal">In reference to the Lionel&#8217;s minutes on&nbsp; =
issue #73 Clarifications on the M-bit:
<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">Summary: Mbit is men=
tioned in different places in the 03 draft (sections 4.3, 6 and 6.8). It is=
 proposed clarifications to ensure a good consistency between the different=
 sections.
<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">&nbsp;<o:p></o:p></p=
>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">Output of the discus=
sion:<o:p></o:p></p>
<p class=3D"MsoPlainText" style=3D"margin-left:36.0pt">It is agreed that th=
e draft should just refer to the RFC6733 for everything regarding the M-bit=
 setting. How and when to set the M-bit is defined in the base protocol.<o:=
p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">I will follow the output of the discussion, taking i=
nto account that I think we still need to indicate that for existing applic=
ations, the Mbit should be cleared for backward compatibility.
<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Hereafter the different places where M-bit is mentio=
ned with the proposed changes<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">In 4.3.&nbsp; Protocol Extensibility<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Existing text: <o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp;&nbsp;It should be noted that [RFC6733] define=
d Grouped AVP extension</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanisms apply.&nbsp; This allows, for exam=
ple, defining a new feature</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; that is mandatory to be understood even when =
piggybacked on an</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; existing applications.&nbsp; More specificall=
y, the sub-AVPs inside the</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; OC-Supported-Features and OC-OLR AVP MAY have=
 the M-bit set.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; However, when overload control AVPs are piggy=
backed on top of an</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; existing applications, setting M-bit in sub-A=
VPs is NOT RECOMMENDED.</span><o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Proposal: To keep the reference to RFC 6733;&nbsp; t=
he text about&nbsp; existing applications is removed as&nbsp; overlapping w=
ith the 6.8 one.<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; It should be noted that [RFC6733] defined Gro=
uped AVP extension</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanisms apply.
</span><o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal">In 6.&nbsp; Attribute Value Pairs<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Existing text<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; This section describes the encoding and seman=
tics of the Diameter</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Overload Indication Attribute Value Pairs (AV=
Ps) defined in this</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; document.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; When added to existing commands, both OC-Feat=
ure-Vector and OC-OLR</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; AVPs SHOULD have the M-bit flag cleared to av=
oid backward</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; compatibility issues.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; A new application specification can incorpora=
te the overload control</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; mechanism specified in this document by makin=
g it mandatory to</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; implement for the application and referencing=
 this specification</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; normatively.&nbsp; In such a case, the OC-Fea=
ture-Vector and OC-OLR AVPs</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; reused in newly defined Diameter applications=
 SHOULD have the M-bit</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; flag set.&nbsp; However, it is the responsibi=
lity of the Diameter</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; application designers to define how overload =
control mechanisms works</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; on that application.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Proposal: to remove two paragraphs as overlapping wi=
th 6.8<b><span style=3D"font-size:12.0pt">
</span></b><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp;&nbsp;This section describes the encoding and =
semantics of the Diameter</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Overload Indication Attribute Value Pairs (AV=
Ps) defined in this</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; document.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal">In 6.8.&nbsp; Attribute Value Pair flag rules<o:p></=
o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal">Existing text<o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; As described in the Diameter base protocol [R=
FC6733], the M-bit</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; setting for a given AVP is relevant to an app=
lication and each</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; command within that application that includes=
 the AVP.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; The Diameter overload control AVPs SHOULD alw=
ays be sent with the</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit cleared when used within existing Diame=
ter applications to</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; avoid backward compatibility issues.&nbsp; Ot=
herwise, when reused in newly</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; defined Diameter applications, the DOC relate=
d AVPs SHOULD have the</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit set.</span><o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Proposal:<b><span style=3D"font-size:12.0pt"> </span=
></b>To keep the reference to RFC 6733 and the particular case of existing =
applications
<o:p></o:p></p>
<p class=3D"MsoNormal"><b><span style=3D"font-size:12.0pt">&nbsp;</span></b=
><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; As described in the Diameter base protocol [R=
FC6733], the M-bit</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; setting for a given AVP is relevant to an app=
lication and each</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; command within that application that includes=
 the AVP. However, the</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; Diameter overload control AVPs SHOULD always =
be sent with the</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; M-bit cleared when used within existing Diame=
ter applications to</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Co=
urier New&quot;">&nbsp;&nbsp; avoid backward compatibility issues.</span><o=
:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">If OK, I will update the proposal for the issue #73 =
in the Dime Tracker
<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">Best regards<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal">JJacques <o:p></o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;font-family:&quot;Ti=
mes New Roman&quot;,&quot;serif&quot;"><br>
<br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>DiME mailing list<o:p></o:p></pre>
<pre><a href=3D"mailto:DiME@ietf.org">DiME@ietf.org</a><o:p></o:p></pre>
<pre><a href=3D"https://www.ietf.org/mailman/listinfo/dime">https://www.iet=
f.org/mailman/listinfo/dime</a><o:p></o:p></pre>
</blockquote>
<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;font-family:&quot;Ti=
mes New Roman&quot;,&quot;serif&quot;"><o:p>&nbsp;</o:p></span></p>
</div>
</body>
</html>

--_000_E194C2E18676714DACA9C3A2516265D2026E8C54FR712WXCHMBA12z_--


From nobody Wed Oct 22 01:32:20 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BDA681A8AFA for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 01:05:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 91M9O18qvhwh for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 01:05:30 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BD89F1A8AF4 for <dime@ietf.org>; Wed, 22 Oct 2014 01:05:30 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54338 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgqvA-0005XH-3k for dime@ietf.org; Wed, 22 Oct 2014 01:05:29 -0700
Message-ID: <54476545.10706@usdonovans.com>
Date: Wed, 22 Oct 2014 10:05:25 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------030604060706010001080803"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/0Q3mQQFejs0WPkAB0kAVf-uYvW8
X-Mailman-Approved-At: Wed, 22 Oct 2014 01:32:17 -0700
Subject: [Dime] Consistency, redundancy and editorial check
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 08:05:37 -0000

This is a multi-part message in MIME format.
--------------030604060706010001080803
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I've done a consistency, redundancy and editorial check, with resulting 
changes, for all sections but the AVP sections (which I had already 
taken a pass at), the Overload Report Handling section, the Security 
section and the Appendices.

I will work on the Overload Report Handling section next.

I have checked the changes in to github.

I have also attached the diff file.

Regards,

Steve

--------------030604060706010001080803
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 34</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 34</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td> </td><td class="right">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="delete">22</span></td><td> </td><td class="rblock">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="delete">23</span></td><td> </td><td class="rblock">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="delete">23</span></td><td> </td><td class="rblock">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  <span class="insert">22</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">4</span></td><td> </td><td class="rblock">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">3</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="delete">5</span></td><td> </td><td class="rblock">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  2<span class="insert">4</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="delete">7</span></td><td> </td><td class="rblock">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  2<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">8</span></td><td> </td><td class="rblock">   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td> </td><td class="right">   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  2<span class="delete">9</span></td><td> </td><td class="rblock">     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  2<span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td> </td><td class="right">     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  3<span class="delete">1</span></td><td> </td><td class="rblock">     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  3<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td> </td><td class="right">   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  3<span class="delete">2</span></td><td> </td><td class="rblock">   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  3<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td> </td><td class="right">     11.2.  Informative References . . . . . . . . . . . . . . . . .  32</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="delete">3</span></td><td> </td><td class="rblock">   Appendix A.  Issues left for future specifications  . . . . . . .  3<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33</td><td> </td><td class="right">     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td> </td><td class="right">     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td> </td><td class="right">   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">   Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  34</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  34</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  35</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td> </td><td class="right">     C.3.  Request Transaction Classification  . . . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 18, line 34</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 18, line 34</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that a reacting node advertises support for the host and</td><td> </td><td class="right">      Note that a reacting node advertises support for the host and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm report types by including the OC-Supported-Features AVP in</td><td> </td><td class="right">      realm report types by including the OC-Supported-Features AVP in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the request.  Support for other report types must be explicitly</td><td> </td><td class="right">      the request.  Support for other report types must be explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td> </td><td class="right">      indicated by a new feature bit in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If OLR is for a new overload condition and there is no unexpired</td><td> </td><td class="right">   If OLR is for a new overload condition and there is no unexpired</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report for previous overload conditions at any reacting node</td><td> </td><td class="right">   overload report for previous overload conditions at any reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   then the reporting node MAY set the sequence number to any value.</td><td> </td><td class="right">   then the reporting node MAY set the sequence number to any value.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The <span class="delete">reporting</span> node MAY update the overload report with new reduction</td><td> </td><td class="rblock">   The <span class="insert">reacting</span> node MAY update the overload report with new reduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   percentages.</td><td> </td><td class="rblock">   percentages.  When <span class="insert">doing so,</span> the <span class="insert">reacting</span> node MUST increase the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock">   sequence number in the new OLR sent.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reporting node MAY extend the validatity duration for an existing</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload report by sending a OLR with either the same or a new</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   validity duration value.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   When <span class="delete">sending an overload report with new values in any of the sub</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   AVPs for an existing overload condition,</span> the <span class="delete">reporting</span> node MUST</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   increase the sequence number in the new OLR sent.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When generating sequence numbers for new overload conditions, the new</td><td> </td><td class="right">   When generating sequence numbers for new overload conditions, the new</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sequence number MUST be greater than any sequence number in an active</td><td> </td><td class="right">   sequence number MUST be greater than any sequence number in an active</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (unexpired) overload report previously sent by the reporting node.</td><td> </td><td class="right">   (unexpired) overload report previously sent by the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This property MUST hold over a reboot of the reporting node.</td><td> </td><td class="right">   This property MUST hold over a reboot of the reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">                                                                         </span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When a reporting node sends an OLR, it effectively delegates any</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   necessary throttling to downstream nodes.  Therefore, the reporting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   node SHOULD NOT apply throttling to the set of messages to which the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   OLR applies.  That is, the same candidate set of messages SHOULD NOT</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   be throttled multiple times.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   However, when the reporting node sends and OLR downstream, it MAY</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   still be responsible to apply other abatement methods, such as</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   diversion, or request throttling requests for other reasons.  For</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   example, an agent or server might have a configured rate limit for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   each client, and throttle requests that exceed that limit, even if</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   such requests had already been candidates for throttling by</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   downstream nodes.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      All OLRs sent have an expiration time calculated by adding the</td><td> </td><td class="right">      All OLRs sent have an expiration time calculated by adding the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      validity-duration contained in the OLR to the time the message was</td><td> </td><td class="right">      validity-duration contained in the OLR to the time the message was</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      sent.  Transit time for the OLR can be safely ignored.  The</td><td> </td><td class="right">      sent.  Transit time for the OLR can be safely ignored.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reporting node can ensure that all reacting nodes have received</td><td> </td><td class="right">      reporting node can ensure that all reacting nodes have received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the OLR by continuing to send it in answer messages until the</td><td> </td><td class="right">      the OLR by continuing to send it in answer messages until the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expiration time for all OLRs sent for that overload contition have</td><td> </td><td class="right">      expiration time for all OLRs sent for that overload contition have</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      expired.</td><td> </td><td class="right">      expired.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This document assumes that there is a single source for realm-reports</td><td> </td><td class="right">   This document assumes that there is a single source for realm-reports</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for a given realm, or that if multiple nodes can send realm reports,</td><td> </td><td class="right">   for a given realm, or that if multiple nodes can send realm reports,</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 12 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>36 lines changed or deleted</i></th><th><i> </i></th><th><i>14 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . .
  . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  21\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  22\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  22\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  23\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  24\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute 
 Value Pair flag rules . . . . . . . . . . . . .  26\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  28\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  30\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . 
 . . . . . . . . . . . . .  31\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  32\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Autho
 rs\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the
  Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The s
 et of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttlin
 g can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by
 \n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and
  a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs
  apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts woul
 d do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that co
 ntained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nIn
 ternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported
 -Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   de
 termine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the l
 oss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature 
 AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  A
 ny semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condi
 tion Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AV
 P.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application.  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n
 \nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to ind
 icate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new value
 s for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X     
                              Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n     
             standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC feature
 s include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate su
 pport for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                    
   October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorit
 hm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n
 \n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a gi
 ven pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity D
 uration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes als
 o delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support o
 f the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the 
 existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP o
 f the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\
 n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacti
 ng\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer v
 alid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic red
 uction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Suppo
 rted-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reacting node MAY update the overload report with new reduction\n   percentages.  When doing so, the reacting node MUST increase the\n   sequence number in the new OLR sent.\n\n   When generating sequence numbers for 
 new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      All OLRs sent have an expiration time calculated by adding the
 \n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequ
 ence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that
  are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features
  (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of t
 raffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n
    4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports. 
  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the request
 ed percentage of new requests will be given abatement\n      treatment.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded
  node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the appl
 ication and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n           
                    * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information n
 ecessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\
 n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   
 between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in t
 he default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload
  report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the r
 eceived message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for diff
 erent "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Valu
 es greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +------------------
 --------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x   
    Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the req
 uest\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the r
 equest would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Ove
 rload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may 
 wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n
 \n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  Thi
 s\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within th
 at peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always use
 d in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other so
 urces from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust req
 uirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forward
 ing a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substant
 ial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo,
  V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Ov
 erload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A se
 parate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents
  with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  Th
 is discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each
  other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The handling of overload reports must take the type of application\n   into consideration, as discus
 sed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.
   For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions la
 ter in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session 
 requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There ar
 e cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Pseudo-session requests are independent requests and do not use\n  
     the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can gene
 rally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      f
 or routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter clien
 t and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: s
 rdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 24, 2015                                      B. Campbell\n                         
                                          Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 21, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  
 Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 24, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publi
 cation of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   7\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .
   11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  13\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  13\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  19\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs 
 . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  23\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  24\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  25\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  26\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  27\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  28\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  28\n   9.  Security Considerations . . . . . . . . . . . . . . . . .
  . .  28\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  30\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  30\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  31\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  32\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  32\n   Appendix A.  Issues left for future specifications  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  33\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  33\n     A.3.  D
 IAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  33\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  33\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  34\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  34\n     C.2.  Application Type Overload Implications  . . . . . . . . .  35\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  36\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  37\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solutio
 n defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 
 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of 
 AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a client dropping requests, or an\n      agent rejecting requests with appropriate error responses.  In\n      extreme cases servers can also throttle requests when requested\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      reductions in traffic does not sufficiently address the 
 overload\n      scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) mechanism allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on beha
 lf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter relay and proxy agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter servers\n   can send requests towards Diameter clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n
    (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning
  of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   re
 ceiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n
    While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unmolested.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existi
 ng application message\n   exchanges.  This is made possible by adding overload control top\n   level AVPs, the OC-OLR AVP and the OC-Supported-Features AVP as\n   optional AVPs into existing commands when the corresponding Command\n   Code Format (CCF) specification allows adding new optional AVPs (see\n   Section 1.3.4 of [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP all request messages originated or relayed by\n   the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have 
 fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the "client" MAY\n   report its overload condition to the "server" for any server\n   initiated message exchange.  An example of such is the server\n   requesting a re-authentication from a client.\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solutions supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is refered to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism is built around the piggybacking principle used for\n   transporting Diameter overload AVPs.  This includes both DCA AVPs and\n   AVPs associated with Diameter overload reports.  This allows 
 for the\n   DCA AVPs to be carried across Diameter nodes that do not support the\n   DOIC solution.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenari
 o, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for po
 ssible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page
  8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken in doing so not to\n      introduce interoperability issues for downstream or upstream DOIC\n      nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, an overload report ID, the length of\n   time that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host 
 reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to realm-routed requests, requests that do\n   not have a Destination-Host AVP, when the selected route for the\n   request is a connection to the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the the Diameter application
 .  A realm\n   report will generally impact the traffic sent to multiple hosts and,\n   as such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n
    overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overlaod condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solutions is designed to be extensible.  This extensibil
 ity\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required to be communicate.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional i
 nformation\n   about handling an overload condition.\n\n   If necessary, new extensions can also define new top level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )
 --_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the client
 s when the Diameter agent acting as back-to-back-agent\n   for DOIC purposes.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n   The DCA procedures are used to indicate support for DOIC and support\n   for DOIC features.  The DOIC features include overload abatement\n   algorithms supported.  It might also include new report types or\n   other extensions documented in the future.\n\n   Diameter nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in messages sent or handled by the node.\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled
  by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatemen
 t algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   If the reqeust message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Su
 pported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included indicates the abatement algorithm the\n   reporting node wants the reacting node to use when the reporting node\n   enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feat
 ure-Vector AVP is based on local reporting node policy.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the followin
 g OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for each Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within
  OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Reporting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when 
 receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS i
 dentified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic reduction.\n\n\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow 
 window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and SHOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatemen
 t, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [
 Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   overload control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value i
 f the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   duration in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter me
 ssage in order to inform a reacting node about an overload\n   condition and request Diameter traffic abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding D
 iameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST only send overload reports of a type advertised\n   as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP 
 in\n      the request.  Support for other report types must be explicitly\n      indicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reporting node MAY update the overload report with new reduction\n   percentages.\n\n   The reporting node MAY extend the validatity duration for an existing\n   overload report by sending a OLR with either the same or a new\n   validity duration value.\n\n   When sending an overload report with new values in any of the sub\n   AVPs for an existing overload condition, the reporting node MUST\n   increase the sequence number in the new OLR sent.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report
  previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to w
 hich the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n   be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\
 n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 19]\n_\nInternet-Draft           
          DOIC                      October 2014\n\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention may also define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   should be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST d
 efine the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature, see the OC-Supported-Features and OC-\n   Feature-Vector AVPs.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value implied\n   report handling semantics.  If the new sub-AVPs imply new semantics\n   for handling the indicated report type, then a new OC-Report-Type AVP\n   value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  O
 verview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of
  request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken would be to select\n       a random number between 1 and 100.  If the random number is less\n       than the indicated reduction percentage then the request is given\n       abatement treatment, otherwise the request is given normal\n       rout
 ing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node must indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The reporting node may change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting 
 node should send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node must attempt to apply abatement treatment to the\n   requested percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following 
 concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive a an OLR in messages sent to\n   the formally overloaded node then the reacting node should slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n 
      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter app
 lication designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abate
 ment algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   p
 rocess with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the
  event SHOULD\n   be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   re
 port previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  S
 ection 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\
 n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      
 Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and req
 uests\n   that can be handled by any server in a realm.\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the 
 OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR   
               TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is r
 elevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node needs to select the appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n\n\n\nKorhonen, et al.         Expires April 24
 , 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non sup
 porting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the S
 pecification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n  
  authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent
  to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   construct
 ed response to a pending request prior to acting on the\n   overload report.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.
 \n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant
  node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not
 \n   remove the need for these other protection strategies.\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are truste
 d to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for over
 load control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nir
 av Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n     
          draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the ov
 erload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should 
 clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n     
  Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n
    For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                     
  October 2014\n\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions
  assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when
  a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions t
 hat occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n  
     the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n\n\nKorhonen, et al.         Expires April 24, 2015  
               [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-sess
 ion requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      rel
 ated requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo
 -session requests:\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may redu
 ce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineau
 x Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 24, 2015                [Page 39]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------030604060706010001080803--


From nobody Wed Oct 22 07:11:24 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 42C101AC3F8 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:11:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U-gHgIhN3p-E for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:11:09 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 350EA1AC3E7 for <dime@ietf.org>; Wed, 22 Oct 2014 07:10:05 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9MEA4Gd024193 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Oct 2014 09:10:04 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <544754C5.7070809@usdonovans.com>
Date: Wed, 22 Oct 2014 09:10:03 -0500
X-Mao-Original-Outgoing-Id: 435679803.798493-47bf52607783d04fcee0571e5d1ec593
Content-Transfer-Encoding: quoted-printable
Message-Id: <86C5EF13-92F3-46B7-BEFB-3596FAD3F815@nostrum.com>
References: <5444D8F9.9040906@usdonovans.com> <D728C623-D8EE-4767-BC74-52233429E1FC@nostrum.com> <544754C5.7070809@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/6Ze1RH1usje9SSfatZetNrKEho4
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Resolution to issues 70 and 74
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:11:14 -0000

wfm

> On Oct 22, 2014, at 1:55 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> The other way of wording this would be as follows:
>=20
>          A reporting node MUST NOT send overload reports of a type =
that has not been
>          advertized as supported by the reacting node.
>=20
> Which is an explicit double negation that is necessary to get the =
point across.  The above wording will be in the next revision of the =
draft.  I'm open to other wording if someone has a cleaner way of =
getting this requirement across.
>=20
> Regards,
>=20
> Steve
>=20
> On 10/20/14, 11:17 PM, Ben Campbell wrote:
>> Slight normative language quibble:
>>=20
>> "MUST only" is a bit of a strange construction from a 2119 =
perspective, in that it implies a negation without an explicit NOT. I =
think we really mean "MUST NOT unless...".
>>=20
>>=20
>>> On Oct 20, 2014, at 4:42 AM, Steve Donovan =
<srdonovan@usdonovans.com> wrote:
>>>=20
>>> I have removed the examples section and moved the "Application =
Considerations" section to an appendix.
>>>=20
>>> For issue 70 I also added the following wording to section 4.2.3:
>>>=20
>>>    A reporting node MUST only send overload reports of a type =
advertised
>>>    as supported by the reacting node.
>>>=20
>>>       Note that a reacting node advertises support for the host and
>>>       realm report types by including the OC-Supported-Features AVP =
in
>>>       the request.  Support for other report types must be =
explicitly
>>>       indicated by a new feature bit in the OC-Feature-Vector AVP.
>>>=20
>>>=20
>>>=20
>>> The diff file is attached.
>>>=20
>>> Regards,
>>>=20
>>> Steve
>>> <Diff_ draft-ietf-dime-ovli-04.txt - =
draft-ietf-dime-ovli-04.txt.html>_________________________________________=
______
>>> DiME mailing list
>>> DiME@ietf.org
>>> https://www.ietf.org/mailman/listinfo/dime
>>=20
>=20


From nobody Wed Oct 22 07:14:06 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 33EE41AC426 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:13:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jsMRZTHj9d7R for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:13:44 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 024191AC427 for <dime@ietf.org>; Wed, 22 Oct 2014 07:11:27 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9MEBQhm024342 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Oct 2014 09:11:27 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <54474FA9.3040300@usdonovans.com>
Date: Wed, 22 Oct 2014 09:11:26 -0500
X-Mao-Original-Outgoing-Id: 435679886.483246-98c0b2942621edfdf41107a68d647470
Content-Transfer-Encoding: quoted-printable
Message-Id: <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com> <54474FA9.3040300@usdonovans.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/JKi4VpW1uaragYFLLwSYpwidvVg
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:13:54 -0000

> On Oct 22, 2014, at 1:33 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>=20
> Ben,
>=20
> I missed the other comment.  The MUST wording you suggest will be in =
the next revision of the -04 draft.
>=20
> Yes on your question about the SHOULD.  Do you think we need wording =
saying that implementations can make other choices if they have good =
reason?

That's what SHOULD means on it's own. We might get push back to suggest =
some potential "good reasons". (None come to mind at the moment...)

>=20
> Steve
>=20
> On 10/21/14, 4:46 PM, Ben Campbell wrote:
>> Did we intend to include anything about Lionel's suggestion on =
UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make sure we =
didn't forget to consider it.)
>>=20
>> I also have one comment inline. Otherwise it looks good to me.
>>=20
>>=20
>>> On Oct 21, 2014, at 3:27 AM, Steve Donovan =
<srdonovan@usdonovans.com> wrote:
>>>=20
>>> I have incorporated the following text into the document in the =
existing, previously empty, section 7. Error Response Codes.
>>>=20
>>> I will wait until tomorrow to close issue 85 to allow for discussion =
of the proposed wording.
>>>=20
>>> I have attached the diff as this wording is not in the draft.
>>>=20
>>> Regards,
>>>=20
>>> Steve
>>>=20
>>> ---
>>>=20
>>>    When a DOIC node rejects a Diameter request due to throttling, =
the
>>>    DOIC node needs to select the appropriate error response code.
>> Do we have separate text saying the node MUST send an error? If not, =
I suggest changing this to "... MUST respond with an appropriate error =
response code."
>>=20
>> The change from "the" to "an" was intentional. Since we are using =
SHOULD below for the actual choice, I assume we intend to leave room for =
an implementation to make other choices if it has a good reason.
>>=20
>>=20
>>>  This
>>>    determination is made based on the probability of the request
>>>    succeeding if retried on a different path.
>>>=20
>>>    The DIAMETER_TOO_BUSY response code SHOULD be used when the =
request
>>>    is likely to succeed on a different path.
>>>=20
>>>       For instance, if the request arrived at the reporting node =
without
>>>       a Destination-Host AVP then the reporting node might determine
>>>       that there is an alternative Diameter node that could =
successfully
>>>       process the request and that retrying the transaction would =
not
>>>       negatively impact the reporting node.
>>>=20
>>>    The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>>    indicate that the request should not be retried.  This is used =
when
>>>    the request is not likely to succeed on a different path and =
retrying
>>>    would consume valuable resources during an occurance of overload.
>>>=20
>>>       For instance, if the request arrived at the reporting node =
with a
>>>       Destination-Host AVP populated with its own Diameter identity =
then
>>>       the reporting node can assume that retrying the request would
>>>       result in it coming to the same reporting node.
>>>=20
>>>       A second example is when an agent that supports the DOIC =
solution
>>>       is preforming the role of a reacting node for a non supporting
>>>       client.  Requests that are rejected as a result of DOIC =
throttling
>>>       in this scenario would generally be rejected with a
>>>       DIAMETER_UNABLE_TO_COMPLY response code.
>>>=20
>>>=20
>>>=20
>>>=20
>>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>>> I agree.
>>>>=20
>>>> Lionel
>>>>=20
>>>> Envoy=E9 depuis mon Sony Xperia SP d'Orange
>>>>=20
>>>> ---- Ben Campbell a =E9crit ----
>>>>=20
>>>>=20
>>>>=20
>>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> =
<lionel.morand@orange.com>
>>>>>  wrote:
>>>>>=20
>>>>> Hi,
>>>>>=20
>>>>> I think that:
>>>>> - TOO_BUSY should be restricted to server answer
>>>>>=20
>>>> One of the reasons I think we need to state this by intended result =
and not by role in the network, is that I expect that an overloaded =
agent (according to the agent overload draft) might send TOO-BUSY. And a =
server that acts as an overload authority for a realm might send =
UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a =
Destination-Host AVP.
>>>>=20
>>>>=20
>>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no =
retransmission is required
>>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC =
node when retransmission to an alternate peer could be better.
>>>>>=20
>>>>> As a second step, we could enhance the answer message (in this =
draft or in a separate draft if preferred) with an error message (e.g. =
"Error-Diagnostic") that could provide further information to "new" node =
that will be then able to adapt their behavior.
>>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an =
Error-Diagnostic set to e.g. "severe overload", besides the OLR in the =
answer, will know that retransmission on the path or a on a different =
path will likely cause the same error. If no error-diagnostic is sent =
back or ignored by the non-supporting-DOOIC node, we will go back to the =
situation prior this draft.
>>>>>=20
>>>>> Regards,
>>>>>=20
>>>>> Lionel
>>>>>=20
>>>>> -----Message d'origine-----
>>>>> De : DiME [
>>>>> mailto:dime-bounces@ietf.org
>>>>> ] De la part de Ben Campbell
>>>>> Envoy=E9 : lundi 20 octobre 2014 19:10
>>>>> =C0 : Steve Donovan
>>>>> Cc :
>>>>> dime@ietf.org
>>>>>=20
>>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>>=20
>>>>> I agree that we should generalize these, but I think the direction =
is not quite right. More inline:
>>>>>=20
>>>>>=20
>>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan =
<srdonovan@usdonovans.com>
>>>>>>  wrote:
>>>>>>=20
>>>>>> We came to the following agreements on error responses:
>>>>>>=20
>>>>>> - Servers rejecting a Diameter request due to an overload =
condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>>=20
>>>>>> - Agents rejecting a Diameter request due to an overload =
condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>>=20
>>>>>> I propose that we generalize this to the following:
>>>>>>=20
>>>>>> - Reporting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>>=20
>>>>>> - Reacting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a UNABLE-TO-COMPLY.
>>>>>>=20
>>>>> I don't think we should state this in terms of reaction and =
reporting nodes. I think we should generalize to expected behavior. =
Also, in the case where the downstream node does not support DOIC, I'm =
not sure it makes sense to say the throttling node is really a reporting =
node (for that particular relationship.)
>>>>>=20
>>>>> My suggestion is we say that, if the throttling node has =
sufficient information to determine that the request is not likely to =
succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If =
it does not have that information, it SHOULD send TOO-BUSY.   (we should =
discuss why this is not a MUST if we have the conditionals in place.)
>>>>>=20
>>>>> Then we could go on to say that a reaction node (or agent) would =
typically fall under the first category, and a reporting node (or =
server) would typically fall under the second. But there certainly may =
be cases where a reacting node does not know if other paths could work, =
and where a reporting node might know that they couldn't.
>>>>>=20
>>>>>=20
>>>>>=20
>>>>>> This would mean that an agent acting as a reporting node (i.e.; =
server doesn't support DOIC or agent is acting as a server front end) =
would sent the TOO_BUSY response and an agent acting as a reacting node =
(i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY =
response.
>>>>>>=20
>>>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 =
on agent behavior will be deleted.
>>>>>>=20
>>>>>> I will hold off making this change until tomorrow (Tuesday =
morning).
>>>>>>=20
>>>>>> Regards,
>>>>>>=20
>>>>>> Steve
>>>>>>=20
>>>>>> _______________________________________________
>>>>>> DiME mailing list
>>>>>>=20
>>>>>> DiME@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>> _______________________________________________
>>>>> DiME mailing list
>>>>>=20
>>>>> DiME@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>=20
>>>>>=20
>>>>> =
__________________________________________________________________________=
_______________________________________________
>>>>>=20
>>>>> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
>>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>>>>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>>>>=20
>>>>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>>>>> they should not be distributed, used or copied without =
authorisation.
>>>>> If you have received this email in error, please notify the sender =
and delete this message and its attachments.
>>>>> As emails may be altered, Orange is not liable for messages that =
have been modified, changed or falsified.
>>>>> Thank you.
>>>>>=20
>>>>>=20
>>>> =
__________________________________________________________________________=
_______________________________________________
>>>>=20
>>>> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>>>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>>>=20
>>>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>>>> they should not be distributed, used or copied without =
authorisation.
>>>> If you have received this email in error, please notify the sender =
and delete this message and its attachments.
>>>> As emails may be altered, Orange is not liable for messages that =
have been modified, changed or falsified.
>>>> Thank you.
>>>>=20
>>>>=20
>>>>=20
>>> <Diff_ draft-ietf-dime-ovli-04.txt - =
draft-ietf-dime-ovli-04.txt.html>
>>=20
>=20


From nobody Wed Oct 22 07:15:15 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5AE791AC3D9 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:14:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7miImZKRxCsL for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:14:49 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 198371AC411 for <dime@ietf.org>; Wed, 22 Oct 2014 07:11:59 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9MEBQhn024342 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Oct 2014 09:11:58 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com>
Date: Wed, 22 Oct 2014 09:11:58 -0500
X-Mao-Original-Outgoing-Id: 435679918.309216-a2125cc592345988ba51b859d0bcbdbd
Content-Transfer-Encoding: quoted-printable
Message-Id: <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com> <54474FA9.3040300@usdonovans.com> <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/bvkjeIskxC7TWB-7huDlSjtnfjc
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:14:59 -0000

> On Oct 22, 2014, at 9:11 AM, Ben Campbell <ben@nostrum.com> wrote:
>=20
>=20
>> On Oct 22, 2014, at 1:33 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>>=20
>> Ben,
>>=20
>> I missed the other comment.  The MUST wording you suggest will be in =
the next revision of the -04 draft.
>>=20
>> Yes on your question about the SHOULD.  Do you think we need wording =
saying that implementations can make other choices if they have good =
reason?
>=20
> That's what SHOULD means on it's own. We might get push back to =
suggest some potential "good reasons". (None come to mind at the =
moment...)
>=20
>>=20
>> Steve
>>=20
>> On 10/21/14, 4:46 PM, Ben Campbell wrote:
>>> Did we intend to include anything about Lionel's suggestion on =
UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make sure we =
didn't forget to consider it.)
>>>=20
>>> I also have one comment inline. Otherwise it looks good to me.
>>>=20
>>>=20
>>>> On Oct 21, 2014, at 3:27 AM, Steve Donovan =
<srdonovan@usdonovans.com> wrote:
>>>>=20
>>>> I have incorporated the following text into the document in the =
existing, previously empty, section 7. Error Response Codes.
>>>>=20
>>>> I will wait until tomorrow to close issue 85 to allow for =
discussion of the proposed wording.
>>>>=20
>>>> I have attached the diff as this wording is not in the draft.
>>>>=20
>>>> Regards,
>>>>=20
>>>> Steve
>>>>=20
>>>> ---
>>>>=20
>>>>   When a DOIC node rejects a Diameter request due to throttling, =
the
>>>>   DOIC node needs to select the appropriate error response code.
>>> Do we have separate text saying the node MUST send an error? If not, =
I suggest changing this to "... MUST respond with an appropriate error =
response code."
>>>=20
>>> The change from "the" to "an" was intentional. Since we are using =
SHOULD below for the actual choice, I assume we intend to leave room for =
an implementation to make other choices if it has a good reason.
>>>=20
>>>=20
>>>> This
>>>>   determination is made based on the probability of the request
>>>>   succeeding if retried on a different path.
>>>>=20
>>>>   The DIAMETER_TOO_BUSY response code SHOULD be used when the =
request
>>>>   is likely to succeed on a different path.
>>>>=20
>>>>      For instance, if the request arrived at the reporting node =
without
>>>>      a Destination-Host AVP then the reporting node might determine
>>>>      that there is an alternative Diameter node that could =
successfully
>>>>      process the request and that retrying the transaction would =
not
>>>>      negatively impact the reporting node.
>>>>=20
>>>>   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>>>   indicate that the request should not be retried.  This is used =
when
>>>>   the request is not likely to succeed on a different path and =
retrying
>>>>   would consume valuable resources during an occurance of overload.
>>>>=20
>>>>      For instance, if the request arrived at the reporting node =
with a
>>>>      Destination-Host AVP populated with its own Diameter identity =
then
>>>>      the reporting node can assume that retrying the request would
>>>>      result in it coming to the same reporting node.
>>>>=20
>>>>      A second example is when an agent that supports the DOIC =
solution
>>>>      is preforming the role of a reacting node for a non supporting
>>>>      client.  Requests that are rejected as a result of DOIC =
throttling
>>>>      in this scenario would generally be rejected with a
>>>>      DIAMETER_UNABLE_TO_COMPLY response code.
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>>>> I agree.
>>>>>=20
>>>>> Lionel
>>>>>=20
>>>>> Envoy=E9 depuis mon Sony Xperia SP d'Orange
>>>>>=20
>>>>> ---- Ben Campbell a =E9crit ----
>>>>>=20
>>>>>=20
>>>>>=20
>>>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com> =
<lionel.morand@orange.com>
>>>>>> wrote:
>>>>>>=20
>>>>>> Hi,
>>>>>>=20
>>>>>> I think that:
>>>>>> - TOO_BUSY should be restricted to server answer
>>>>>>=20
>>>>> One of the reasons I think we need to state this by intended =
result and not by role in the network, is that I expect that an =
overloaded agent (according to the agent overload draft) might send =
TOO-BUSY. And a server that acts as an overload authority for a realm =
might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not =
contain a Destination-Host AVP.
>>>>>=20
>>>>>=20
>>>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no =
retransmission is required
>>>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC =
node when retransmission to an alternate peer could be better.
>>>>>>=20
>>>>>> As a second step, we could enhance the answer message (in this =
draft or in a separate draft if preferred) with an error message (e.g. =
"Error-Diagnostic") that could provide further information to "new" node =
that will be then able to adapt their behavior.
>>>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an =
Error-Diagnostic set to e.g. "severe overload", besides the OLR in the =
answer, will know that retransmission on the path or a on a different =
path will likely cause the same error. If no error-diagnostic is sent =
back or ignored by the non-supporting-DOOIC node, we will go back to the =
situation prior this draft.
>>>>>>=20
>>>>>> Regards,
>>>>>>=20
>>>>>> Lionel
>>>>>>=20
>>>>>> -----Message d'origine-----
>>>>>> De : DiME [
>>>>>> mailto:dime-bounces@ietf.org
>>>>>> ] De la part de Ben Campbell
>>>>>> Envoy=E9 : lundi 20 octobre 2014 19:10
>>>>>> =C0 : Steve Donovan
>>>>>> Cc :
>>>>>> dime@ietf.org
>>>>>>=20
>>>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>>>=20
>>>>>> I agree that we should generalize these, but I think the =
direction is not quite right. More inline:
>>>>>>=20
>>>>>>=20
>>>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan =
<srdonovan@usdonovans.com>
>>>>>>> wrote:
>>>>>>>=20
>>>>>>> We came to the following agreements on error responses:
>>>>>>>=20
>>>>>>> - Servers rejecting a Diameter request due to an overload =
condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>>>=20
>>>>>>> - Agents rejecting a Diameter request due to an overload =
condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>>>=20
>>>>>>> I propose that we generalize this to the following:
>>>>>>>=20
>>>>>>> - Reporting nodes rejecting a Diameter request due to an =
overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>>>=20
>>>>>>> - Reacting nodes rejecting a Diameter request due to an overload =
condition SHOULD send a UNABLE-TO-COMPLY.
>>>>>>>=20
>>>>>> I don't think we should state this in terms of reaction and =
reporting nodes. I think we should generalize to expected behavior. =
Also, in the case where the downstream node does not support DOIC, I'm =
not sure it makes sense to say the throttling node is really a reporting =
node (for that particular relationship.)
>>>>>>=20
>>>>>> My suggestion is we say that, if the throttling node has =
sufficient information to determine that the request is not likely to =
succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If =
it does not have that information, it SHOULD send TOO-BUSY.   (we should =
discuss why this is not a MUST if we have the conditionals in place.)
>>>>>>=20
>>>>>> Then we could go on to say that a reaction node (or agent) would =
typically fall under the first category, and a reporting node (or =
server) would typically fall under the second. But there certainly may =
be cases where a reacting node does not know if other paths could work, =
and where a reporting node might know that they couldn't.
>>>>>>=20
>>>>>>=20
>>>>>>=20
>>>>>>> This would mean that an agent acting as a reporting node (i.e.; =
server doesn't support DOIC or agent is acting as a server front end) =
would sent the TOO_BUSY response and an agent acting as a reacting node =
(i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY =
response.
>>>>>>>=20
>>>>>>> I propose adding this to a new section 4.2.4.  The existing =
4.2.4 on agent behavior will be deleted.
>>>>>>>=20
>>>>>>> I will hold off making this change until tomorrow (Tuesday =
morning).
>>>>>>>=20
>>>>>>> Regards,
>>>>>>>=20
>>>>>>> Steve
>>>>>>>=20
>>>>>>> _______________________________________________
>>>>>>> DiME mailing list
>>>>>>>=20
>>>>>>> DiME@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>> _______________________________________________
>>>>>> DiME mailing list
>>>>>>=20
>>>>>> DiME@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>>=20
>>>>>>=20
>>>>>> =
__________________________________________________________________________=
_______________________________________________
>>>>>>=20
>>>>>> Ce message et ses pieces jointes peuvent contenir des =
informations confidentielles ou privilegiees et ne doivent donc
>>>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>>>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>>>>>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>>>>>=20
>>>>>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>>>>>> they should not be distributed, used or copied without =
authorisation.
>>>>>> If you have received this email in error, please notify the =
sender and delete this message and its attachments.
>>>>>> As emails may be altered, Orange is not liable for messages that =
have been modified, changed or falsified.
>>>>>> Thank you.
>>>>>>=20
>>>>>>=20
>>>>> =
__________________________________________________________________________=
_______________________________________________
>>>>>=20
>>>>> Ce message et ses pieces jointes peuvent contenir des informations =
confidentielles ou privilegiees et ne doivent donc
>>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous =
avez recu ce message par erreur, veuillez le signaler
>>>>> a l'expediteur et le detruire ainsi que les pieces jointes. Les =
messages electroniques etant susceptibles d'alteration,
>>>>> Orange decline toute responsabilite si ce message a ete altere, =
deforme ou falsifie. Merci.
>>>>>=20
>>>>> This message and its attachments may contain confidential or =
privileged information that may be protected by law;
>>>>> they should not be distributed, used or copied without =
authorisation.
>>>>> If you have received this email in error, please notify the sender =
and delete this message and its attachments.
>>>>> As emails may be altered, Orange is not liable for messages that =
have been modified, changed or falsified.
>>>>> Thank you.
>>>>>=20
>>>>>=20
>>>>>=20
>>>> <Diff_ draft-ietf-dime-ovli-04.txt - =
draft-ietf-dime-ovli-04.txt.html>
>>>=20
>>=20
>=20


From nobody Wed Oct 22 07:16:33 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 45EEE1AC3E5 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:16:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pcKZjaYv2i1W for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:16:29 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6B0931AC447 for <dime@ietf.org>; Wed, 22 Oct 2014 07:13:34 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9MEDXu4024538 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Oct 2014 09:13:34 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=iso-8859-1
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com>
Date: Wed, 22 Oct 2014 09:13:33 -0500
X-Mao-Original-Outgoing-Id: 435680013.030103-bd01eca0c4dd5c12f98488747346c9fc
Content-Transfer-Encoding: quoted-printable
Message-Id: <63360489-6C41-4A03-B590-59CE093254BE@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com> <54474FA9.3040300@usdonovans.com> <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com> <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com>
To: Steve Donovan <srdonovan@usdonovans.com>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/1yZybmlxcr8mkw81tqg_UkZd1-Q
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:16:30 -0000

Oops, hit sent early:

> On Oct 22, 2014, at 9:11 AM, Ben Campbell <ben@nostrum.com> wrote:
>=20
>=20
>> On Oct 22, 2014, at 9:11 AM, Ben Campbell <ben@nostrum.com> wrote:
>>=20
>>=20
>>> On Oct 22, 2014, at 1:33 AM, Steve Donovan =
<srdonovan@usdonovans.com> wrote:
>>>=20
>>> Ben,
>>>=20
>>> I missed the other comment.  The MUST wording you suggest will be in =
the next revision of the -04 draft.
>>>=20
>>> Yes on your question about the SHOULD.  Do you think we need wording =
saying that implementations can make other choices if they have good =
reason?
>>=20
>> That's what SHOULD means on it's own. We might get push back to =
suggest some potential "good reasons". (None come to mind at the =
moment...)
>>=20

I guess one potential good reason would be if we (or someone) created =
new error codes in the future to distinguish these scenarios from other =
uses of the existing codes. We've talked about fixing that with a =
diagnostic AVP, but that's not written in stone.


From nobody Wed Oct 22 07:27:09 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id ABA5A1ACC8C for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:27:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level: 
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a1D4Gx1t0yFD for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:27:00 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias92.francetelecom.com [193.251.215.92]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 299B01AC43D for <dime@ietf.org>; Wed, 22 Oct 2014 07:26:54 -0700 (PDT)
Received: from omfedm06.si.francetelecom.fr (unknown [xx.xx.xx.2]) by omfedm14.si.francetelecom.fr (ESMTP service) with ESMTP id C5D2A22C336; Wed, 22 Oct 2014 16:26:52 +0200 (CEST)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.183]) by omfedm06.si.francetelecom.fr (ESMTP service) with ESMTP id A52E427C085; Wed, 22 Oct 2014 16:26:52 +0200 (CEST)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH02.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Wed, 22 Oct 2014 16:26:52 +0200
From: <lionel.morand@orange.com>
To: Ben Campbell <ben@nostrum.com>, Steve Donovan <srdonovan@usdonovans.com>
Thread-Topic: [Dime] Proposal for error response wording (issue 85)
Thread-Index: AQHP7FOMzo+IEEAdVEGPqLkd/UJbyJw5F0KAgABpp+D//+1BAIAAjwkagAAadoCAAGnDgIABCIGAgACABgCAAAAnAIAAJVSQ
Date: Wed, 22 Oct 2014 14:26:51 +0000
Message-ID: <19590_1413988012_5447BEAC_19590_5217_1_6B7134B31289DC4FAF731D844122B36E813EB3@PEXCVZYM13.corporate.adroot.infra.ftgroup>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <,<AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com> <54474FA9.3040300@usdonovans.com> <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com> <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com>
In-Reply-To: <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.197.38.4]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.10.22.123024
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/rTnthW_7xhqOVR3U2UU-LWaaFYk
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:27:04 -0000

I will try to come back with a proposal on UNABLE_TO_DELIVER and also the n=
ew AVP after -04.
The existing text for 04 is OK and can be anyway extended if required.

Lionel

-----Message d'origine-----
De=A0: Ben Campbell [mailto:ben@nostrum.com]=20
Envoy=E9=A0: mercredi 22 octobre 2014 16:12
=C0=A0: Steve Donovan
Cc=A0: MORAND Lionel IMT/OLN; dime@ietf.org
Objet=A0: Re: [Dime] Proposal for error response wording (issue 85)


> On Oct 22, 2014, at 9:11 AM, Ben Campbell <ben@nostrum.com> wrote:
>=20
>=20
>> On Oct 22, 2014, at 1:33 AM, Steve Donovan <srdonovan@usdonovans.com> wr=
ote:
>>=20
>> Ben,
>>=20
>> I missed the other comment.  The MUST wording you suggest will be in the=
 next revision of the -04 draft.
>>=20
>> Yes on your question about the SHOULD.  Do you think we need wording say=
ing that implementations can make other choices if they have good reason?
>=20
> That's what SHOULD means on it's own. We might get push back to=20
> suggest some potential "good reasons". (None come to mind at the=20
> moment...)
>=20
>>=20
>> Steve
>>=20
>> On 10/21/14, 4:46 PM, Ben Campbell wrote:
>>> Did we intend to include anything about Lionel's suggestion on=20
>>> UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make=20
>>> sure we didn't forget to consider it.)
>>>=20
>>> I also have one comment inline. Otherwise it looks good to me.
>>>=20
>>>=20
>>>> On Oct 21, 2014, at 3:27 AM, Steve Donovan <srdonovan@usdonovans.com> =
wrote:
>>>>=20
>>>> I have incorporated the following text into the document in the existi=
ng, previously empty, section 7. Error Response Codes.
>>>>=20
>>>> I will wait until tomorrow to close issue 85 to allow for discussion o=
f the proposed wording.
>>>>=20
>>>> I have attached the diff as this wording is not in the draft.
>>>>=20
>>>> Regards,
>>>>=20
>>>> Steve
>>>>=20
>>>> ---
>>>>=20
>>>>   When a DOIC node rejects a Diameter request due to throttling, the
>>>>   DOIC node needs to select the appropriate error response code.
>>> Do we have separate text saying the node MUST send an error? If not, I =
suggest changing this to "... MUST respond with an appropriate error respon=
se code."
>>>=20
>>> The change from "the" to "an" was intentional. Since we are using SHOUL=
D below for the actual choice, I assume we intend to leave room for an impl=
ementation to make other choices if it has a good reason.
>>>=20
>>>=20
>>>> This
>>>>   determination is made based on the probability of the request
>>>>   succeeding if retried on a different path.
>>>>=20
>>>>   The DIAMETER_TOO_BUSY response code SHOULD be used when the request
>>>>   is likely to succeed on a different path.
>>>>=20
>>>>      For instance, if the request arrived at the reporting node without
>>>>      a Destination-Host AVP then the reporting node might determine
>>>>      that there is an alternative Diameter node that could successfully
>>>>      process the request and that retrying the transaction would not
>>>>      negatively impact the reporting node.
>>>>=20
>>>>   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>>>   indicate that the request should not be retried.  This is used when
>>>>   the request is not likely to succeed on a different path and retrying
>>>>   would consume valuable resources during an occurance of overload.
>>>>=20
>>>>      For instance, if the request arrived at the reporting node with a
>>>>      Destination-Host AVP populated with its own Diameter identity then
>>>>      the reporting node can assume that retrying the request would
>>>>      result in it coming to the same reporting node.
>>>>=20
>>>>      A second example is when an agent that supports the DOIC solution
>>>>      is preforming the role of a reacting node for a non supporting
>>>>      client.  Requests that are rejected as a result of DOIC throttling
>>>>      in this scenario would generally be rejected with a
>>>>      DIAMETER_UNABLE_TO_COMPLY response code.
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>>>> I agree.
>>>>>=20
>>>>> Lionel
>>>>>=20
>>>>> Envoy=E9 depuis mon Sony Xperia SP d'Orange
>>>>>=20
>>>>> ---- Ben Campbell a =E9crit ----
>>>>>=20
>>>>>=20
>>>>>=20
>>>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com>=20
>>>>>> <lionel.morand@orange.com>
>>>>>> wrote:
>>>>>>=20
>>>>>> Hi,
>>>>>>=20
>>>>>> I think that:
>>>>>> - TOO_BUSY should be restricted to server answer
>>>>>>=20
>>>>> One of the reasons I think we need to state this by intended result a=
nd not by role in the network, is that I expect that an overloaded agent (a=
ccording to the agent overload draft) might send TOO-BUSY. And a server tha=
t acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or=
 DELIVER] to a request that did not contain a Destination-Host AVP.
>>>>>=20
>>>>>=20
>>>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no=20
>>>>>> retransmission is required
>>>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC no=
de when retransmission to an alternate peer could be better.
>>>>>>=20
>>>>>> As a second step, we could enhance the answer message (in this draft=
 or in a separate draft if preferred) with an error message (e.g. "Error-Di=
agnostic") that could provide further information to "new" node that will b=
e then able to adapt their behavior.
>>>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Er=
ror-Diagnostic set to e.g. "severe overload", besides the OLR in the answer=
, will know that retransmission on the path or a on a different path will l=
ikely cause the same error. If no error-diagnostic is sent back or ignored =
by the non-supporting-DOOIC node, we will go back to the situation prior th=
is draft.
>>>>>>=20
>>>>>> Regards,
>>>>>>=20
>>>>>> Lionel
>>>>>>=20
>>>>>> -----Message d'origine-----
>>>>>> De : DiME [
>>>>>> mailto:dime-bounces@ietf.org
>>>>>> ] De la part de Ben Campbell
>>>>>> Envoy=E9 : lundi 20 octobre 2014 19:10 =C0 : Steve Donovan Cc :
>>>>>> dime@ietf.org
>>>>>>=20
>>>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>>>=20
>>>>>> I agree that we should generalize these, but I think the direction i=
s not quite right. More inline:
>>>>>>=20
>>>>>>=20
>>>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan=20
>>>>>>> <srdonovan@usdonovans.com>
>>>>>>> wrote:
>>>>>>>=20
>>>>>>> We came to the following agreements on error responses:
>>>>>>>=20
>>>>>>> - Servers rejecting a Diameter request due to an overload condition=
 should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>>>=20
>>>>>>> - Agents rejecting a Diameter request due to an overload condition =
should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>>>=20
>>>>>>> I propose that we generalize this to the following:
>>>>>>>=20
>>>>>>> - Reporting nodes rejecting a Diameter request due to an overload c=
ondition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>>>=20
>>>>>>> - Reacting nodes rejecting a Diameter request due to an overload co=
ndition SHOULD send a UNABLE-TO-COMPLY.
>>>>>>>=20
>>>>>> I don't think we should state this in terms of reaction and=20
>>>>>> reporting nodes. I think we should generalize to expected=20
>>>>>> behavior. Also, in the case where the downstream node does not=20
>>>>>> support DOIC, I'm not sure it makes sense to say the throttling=20
>>>>>> node is really a reporting node (for that particular=20
>>>>>> relationship.)
>>>>>>=20
>>>>>> My suggestion is we say that, if the throttling node has sufficient =
information to determine that the request is not likely to succeed if retri=
ed on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have th=
at information, it SHOULD send TOO-BUSY.   (we should discuss why this is n=
ot a MUST if we have the conditionals in place.)
>>>>>>=20
>>>>>> Then we could go on to say that a reaction node (or agent) would typ=
ically fall under the first category, and a reporting node (or server) woul=
d typically fall under the second. But there certainly may be cases where a=
 reacting node does not know if other paths could work, and where a reporti=
ng node might know that they couldn't.
>>>>>>=20
>>>>>>=20
>>>>>>=20
>>>>>>> This would mean that an agent acting as a reporting node (i.e.; ser=
ver doesn't support DOIC or agent is acting as a server front end) would se=
nt the TOO_BUSY response and an agent acting as a reacting node (i.e.; a cl=
ient doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>>>>>=20
>>>>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 o=
n agent behavior will be deleted.
>>>>>>>=20
>>>>>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>>>>>=20
>>>>>>> Regards,
>>>>>>>=20
>>>>>>> Steve
>>>>>>>=20
>>>>>>> _______________________________________________
>>>>>>> DiME mailing list
>>>>>>>=20
>>>>>>> DiME@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>> _______________________________________________
>>>>>> DiME mailing list
>>>>>>=20
>>>>>> DiME@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>>=20
>>>>>>=20
>>>>>> _________________________________________________________________
>>>>>> ________________________________________________________
>>>>>>=20
>>>>>> Ce message et ses pieces jointes peuvent contenir des=20
>>>>>> informations confidentielles ou privilegiees et ne doivent donc=20
>>>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous=20
>>>>>> avez recu ce message par erreur, veuillez le signaler a l'expediteur=
 et le detruire ainsi que les pieces jointes. Les messages electroniques et=
ant susceptibles d'alteration, Orange decline toute responsabilite si ce me=
ssage a ete altere, deforme ou falsifie. Merci.
>>>>>>=20
>>>>>> This message and its attachments may contain confidential or=20
>>>>>> privileged information that may be protected by law; they should not=
 be distributed, used or copied without authorisation.
>>>>>> If you have received this email in error, please notify the sender a=
nd delete this message and its attachments.
>>>>>> As emails may be altered, Orange is not liable for messages that hav=
e been modified, changed or falsified.
>>>>>> Thank you.
>>>>>>=20
>>>>>>=20
>>>>> __________________________________________________________________
>>>>> _______________________________________________________
>>>>>=20
>>>>> Ce message et ses pieces jointes peuvent contenir des informations=20
>>>>> confidentielles ou privilegiees et ne doivent donc pas etre=20
>>>>> diffuses, exploites ou copies sans autorisation. Si vous avez recu=20
>>>>> ce message par erreur, veuillez le signaler a l'expediteur et le detr=
uire ainsi que les pieces jointes. Les messages electroniques etant suscept=
ibles d'alteration, Orange decline toute responsabilite si ce message a ete=
 altere, deforme ou falsifie. Merci.
>>>>>=20
>>>>> This message and its attachments may contain confidential or=20
>>>>> privileged information that may be protected by law; they should not =
be distributed, used or copied without authorisation.
>>>>> If you have received this email in error, please notify the sender an=
d delete this message and its attachments.
>>>>> As emails may be altered, Orange is not liable for messages that have=
 been modified, changed or falsified.
>>>>> Thank you.
>>>>>=20
>>>>>=20
>>>>>=20
>>>> <Diff_ draft-ietf-dime-ovli-04.txt -=20
>>>> draft-ietf-dime-ovli-04.txt.html>
>>>=20
>>=20
>=20


___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


From nobody Wed Oct 22 07:51:55 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 277FB1ACD1E for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:51:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level: 
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hmNN2tYR4ZDr for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 07:51:46 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C86651ACD12 for <dime@ietf.org>; Wed, 22 Oct 2014 07:51:46 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:55331 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgxGI-0000wb-7J; Wed, 22 Oct 2014 07:51:45 -0700
Message-ID: <5447C47C.4070404@usdonovans.com>
Date: Wed, 22 Oct 2014 16:51:40 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: lionel.morand@orange.com, Ben Campbell <ben@nostrum.com>
References: <5444E8B9.8090002@usdonovans.com> <28879012-29FA-43F1-83EE-4B2A8539C7D8@nostrum.com> <22114_1413841265_54458171_22114_4224_1_6B7134B31289DC4FAF731D844122B36E8005B4@PEXCVZYM13.corporate.adroot.infra.ftgroup> <, <AA1C6CD5-A07F-4DC0-8685-70AB5A4DF153@nostrum.com> <>> <1979_1413867197_5445E6BD_1979_10335_1_s8e3rg7h7yyc2r23mds3uefp.1413867190363@email.android.com> <5446190F.2070804@usdonovans.com> <99D5FF0E-2D2B-4DB1-8C9C-19296A8D1822@nostrum.com> <54474FA9.3040300@usdonovans.com> <54B8FD10-62AF-4F37-8BB8-AE4020087E8B@nostrum.com> <E6B5E734-51A2-4E66-8D99-32796D6FE690@nostrum.com> <19590_1413988012_5447BEAC_19590_5217_1_6B7134B31289DC4FAF731D844122B36E813EB3@PEXCVZYM13.corporate.adroot.infra.ftgroup>
In-Reply-To: <19590_1413988012_5447BEAC_19590_5217_1_6B7134B31289DC4FAF731D844122B36E813EB3@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Jdb_08k1Om40u3EZ9zN-amMbYJE
Cc: "dime@ietf.org" <dime@ietf.org>
Subject: Re: [Dime] Proposal for error response wording (issue 85)
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 14:51:49 -0000

Perfect, thanks.

Steve

On 10/22/14, 4:26 PM, lionel.morand@orange.com wrote:
> I will try to come back with a proposal on UNABLE_TO_DELIVER and also the new AVP after -04.
> The existing text for 04 is OK and can be anyway extended if required.
>
> Lionel
>
> -----Message d'origine-----
> De : Ben Campbell [mailto:ben@nostrum.com]
> Envoyé : mercredi 22 octobre 2014 16:12
> À : Steve Donovan
> Cc : MORAND Lionel IMT/OLN; dime@ietf.org
> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>
>
>> On Oct 22, 2014, at 9:11 AM, Ben Campbell <ben@nostrum.com> wrote:
>>
>>
>>> On Oct 22, 2014, at 1:33 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>>
>>> Ben,
>>>
>>> I missed the other comment.  The MUST wording you suggest will be in the next revision of the -04 draft.
>>>
>>> Yes on your question about the SHOULD.  Do you think we need wording saying that implementations can make other choices if they have good reason?
>> That's what SHOULD means on it's own. We might get push back to
>> suggest some potential "good reasons". (None come to mind at the
>> moment...)
>>
>>> Steve
>>>
>>> On 10/21/14, 4:46 PM, Ben Campbell wrote:
>>>> Did we intend to include anything about Lionel's suggestion on
>>>> UNABLE_TO_DELIVER?  (I am neutral on that--I just wanted to make
>>>> sure we didn't forget to consider it.)
>>>>
>>>> I also have one comment inline. Otherwise it looks good to me.
>>>>
>>>>
>>>>> On Oct 21, 2014, at 3:27 AM, Steve Donovan <srdonovan@usdonovans.com> wrote:
>>>>>
>>>>> I have incorporated the following text into the document in the existing, previously empty, section 7. Error Response Codes.
>>>>>
>>>>> I will wait until tomorrow to close issue 85 to allow for discussion of the proposed wording.
>>>>>
>>>>> I have attached the diff as this wording is not in the draft.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Steve
>>>>>
>>>>> ---
>>>>>
>>>>>    When a DOIC node rejects a Diameter request due to throttling, the
>>>>>    DOIC node needs to select the appropriate error response code.
>>>> Do we have separate text saying the node MUST send an error? If not, I suggest changing this to "... MUST respond with an appropriate error response code."
>>>>
>>>> The change from "the" to "an" was intentional. Since we are using SHOULD below for the actual choice, I assume we intend to leave room for an implementation to make other choices if it has a good reason.
>>>>
>>>>
>>>>> This
>>>>>    determination is made based on the probability of the request
>>>>>    succeeding if retried on a different path.
>>>>>
>>>>>    The DIAMETER_TOO_BUSY response code SHOULD be used when the request
>>>>>    is likely to succeed on a different path.
>>>>>
>>>>>       For instance, if the request arrived at the reporting node without
>>>>>       a Destination-Host AVP then the reporting node might determine
>>>>>       that there is an alternative Diameter node that could successfully
>>>>>       process the request and that retrying the transaction would not
>>>>>       negatively impact the reporting node.
>>>>>
>>>>>    The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to
>>>>>    indicate that the request should not be retried.  This is used when
>>>>>    the request is not likely to succeed on a different path and retrying
>>>>>    would consume valuable resources during an occurance of overload.
>>>>>
>>>>>       For instance, if the request arrived at the reporting node with a
>>>>>       Destination-Host AVP populated with its own Diameter identity then
>>>>>       the reporting node can assume that retrying the request would
>>>>>       result in it coming to the same reporting node.
>>>>>
>>>>>       A second example is when an agent that supports the DOIC solution
>>>>>       is preforming the role of a reacting node for a non supporting
>>>>>       client.  Requests that are rejected as a result of DOIC throttling
>>>>>       in this scenario would generally be rejected with a
>>>>>       DIAMETER_UNABLE_TO_COMPLY response code.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 10/21/14, 6:53 AM, lionel.morand@orange.com wrote:
>>>>>> I agree.
>>>>>>
>>>>>> Lionel
>>>>>>
>>>>>> Envoyé depuis mon Sony Xperia SP d'Orange
>>>>>>
>>>>>> ---- Ben Campbell a écrit ----
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Oct 20, 2014, at 4:41 PM, <lionel.morand@orange.com>
>>>>>>> <lionel.morand@orange.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I think that:
>>>>>>> - TOO_BUSY should be restricted to server answer
>>>>>>>
>>>>>> One of the reasons I think we need to state this by intended result and not by role in the network, is that I expect that an overloaded agent (according to the agent overload draft) might send TOO-BUSY. And a server that acts as an overload authority for a realm might send UNABLE-TO-[COMPLY or DELIVER] to a request that did not contain a Destination-Host AVP.
>>>>>>
>>>>>>
>>>>>>> - UNABLE_TO_COMPLY as answer to non-supporting DOIC when no
>>>>>>> retransmission is required
>>>>>>> - UNABLE_TO_DELIVER to supporting DOIC and to non-supporting DOIC node when retransmission to an alternate peer could be better.
>>>>>>>
>>>>>>> As a second step, we could enhance the answer message (in this draft or in a separate draft if preferred) with an error message (e.g. "Error-Diagnostic") that could provide further information to "new" node that will be then able to adapt their behavior.
>>>>>>> So a supporting DOIC receiving UNABLE_TO_DELIVER/TOO_BUSY with an Error-Diagnostic set to e.g. "severe overload", besides the OLR in the answer, will know that retransmission on the path or a on a different path will likely cause the same error. If no error-diagnostic is sent back or ignored by the non-supporting-DOOIC node, we will go back to the situation prior this draft.
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Lionel
>>>>>>>
>>>>>>> -----Message d'origine-----
>>>>>>> De : DiME [
>>>>>>> mailto:dime-bounces@ietf.org
>>>>>>> ] De la part de Ben Campbell
>>>>>>> Envoyé : lundi 20 octobre 2014 19:10 À : Steve Donovan Cc :
>>>>>>> dime@ietf.org
>>>>>>>
>>>>>>> Objet : Re: [Dime] Proposal for error response wording (issue 85)
>>>>>>>
>>>>>>> I agree that we should generalize these, but I think the direction is not quite right. More inline:
>>>>>>>
>>>>>>>
>>>>>>>> On Oct 20, 2014, at 5:49 AM, Steve Donovan
>>>>>>>> <srdonovan@usdonovans.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> We came to the following agreements on error responses:
>>>>>>>>
>>>>>>>> - Servers rejecting a Diameter request due to an overload condition should send a 3002 DIAMETER_TOO_BUSY error response.
>>>>>>>>
>>>>>>>> - Agents rejecting a Diameter request due to an overload condition should send a 5012 DIAMETER_UNABLE_TO_COMPLY.
>>>>>>>>
>>>>>>>> I propose that we generalize this to the following:
>>>>>>>>
>>>>>>>> - Reporting nodes rejecting a Diameter request due to an overload condition SHOULD send a 3002 DIAMETER-TOO-BUSY error response.
>>>>>>>>
>>>>>>>> - Reacting nodes rejecting a Diameter request due to an overload condition SHOULD send a UNABLE-TO-COMPLY.
>>>>>>>>
>>>>>>> I don't think we should state this in terms of reaction and
>>>>>>> reporting nodes. I think we should generalize to expected
>>>>>>> behavior. Also, in the case where the downstream node does not
>>>>>>> support DOIC, I'm not sure it makes sense to say the throttling
>>>>>>> node is really a reporting node (for that particular
>>>>>>> relationship.)
>>>>>>>
>>>>>>> My suggestion is we say that, if the throttling node has sufficient information to determine that the request is not likely to succeed if retried on another path, it SHOULD send UNABLE-TO-COMPLY. If it does not have that information, it SHOULD send TOO-BUSY.   (we should discuss why this is not a MUST if we have the conditionals in place.)
>>>>>>>
>>>>>>> Then we could go on to say that a reaction node (or agent) would typically fall under the first category, and a reporting node (or server) would typically fall under the second. But there certainly may be cases where a reacting node does not know if other paths could work, and where a reporting node might know that they couldn't.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> This would mean that an agent acting as a reporting node (i.e.; server doesn't support DOIC or agent is acting as a server front end) would sent the TOO_BUSY response and an agent acting as a reacting node (i.e.; a client doesn't support DOIC) then it sends a UNABLE_TO_COMPLY response.
>>>>>>>>
>>>>>>>> I propose adding this to a new section 4.2.4.  The existing 4.2.4 on agent behavior will be deleted.
>>>>>>>>
>>>>>>>> I will hold off making this change until tomorrow (Tuesday morning).
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Steve
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> DiME mailing list
>>>>>>>>
>>>>>>>> DiME@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>>> _______________________________________________
>>>>>>> DiME mailing list
>>>>>>>
>>>>>>> DiME@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/dime
>>>>>>>
>>>>>>>
>>>>>>> _________________________________________________________________
>>>>>>> ________________________________________________________
>>>>>>>
>>>>>>> Ce message et ses pieces jointes peuvent contenir des
>>>>>>> informations confidentielles ou privilegiees et ne doivent donc
>>>>>>> pas etre diffuses, exploites ou copies sans autorisation. Si vous
>>>>>>> avez recu ce message par erreur, veuillez le signaler a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration, Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>>>>>
>>>>>>> This message and its attachments may contain confidential or
>>>>>>> privileged information that may be protected by law; they should not be distributed, used or copied without authorisation.
>>>>>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>>>>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>>>>>> Thank you.
>>>>>>>
>>>>>>>
>>>>>> __________________________________________________________________
>>>>>> _______________________________________________________
>>>>>>
>>>>>> Ce message et ses pieces jointes peuvent contenir des informations
>>>>>> confidentielles ou privilegiees et ne doivent donc pas etre
>>>>>> diffuses, exploites ou copies sans autorisation. Si vous avez recu
>>>>>> ce message par erreur, veuillez le signaler a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration, Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>>>>>>
>>>>>> This message and its attachments may contain confidential or
>>>>>> privileged information that may be protected by law; they should not be distributed, used or copied without authorisation.
>>>>>> If you have received this email in error, please notify the sender and delete this message and its attachments.
>>>>>> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
>>>>>> Thank you.
>>>>>>
>>>>>>
>>>>>>
>>>>> <Diff_ draft-ietf-dime-ovli-04.txt -
>>>>> draft-ietf-dime-ovli-04.txt.html>
>
> _________________________________________________________________________________________________________________________
>
> Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
> pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
> a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
> Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.
>
> This message and its attachments may contain confidential or privileged information that may be protected by law;
> they should not be distributed, used or copied without authorisation.
> If you have received this email in error, please notify the sender and delete this message and its attachments.
> As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
> Thank you.
>
>


From nobody Wed Oct 22 09:36:04 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9FB3D1A910E for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 06:23:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0AGdg2U1j06j for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 06:23:07 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 848781A90E0 for <dime@ietf.org>; Wed, 22 Oct 2014 06:23:07 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:54949 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgvsW-0008Ba-Gd for dime@ietf.org; Wed, 22 Oct 2014 06:23:06 -0700
Message-ID: <5447AFB6.3060400@usdonovans.com>
Date: Wed, 22 Oct 2014 15:23:02 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------050001050707070804040105"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/TUkzGju-GqQANXFVId-7v8RalLI
X-Mailman-Approved-At: Wed, 22 Oct 2014 09:36:01 -0700
Subject: [Dime] Rewrite of Overload Report Handling Section
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 13:23:16 -0000

This is a multi-part message in MIME format.
--------------050001050707070804040105
Content-Type: multipart/alternative;
 boundary="------------090507060303030408070604"


--------------090507060303030408070604
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

I have done an extensive rewrite of the Overload Report Handling section.

The requirements in the original version were split unevenly between 
various topics, including repeating of behavior from the Capability 
Announcement section.

I split the requirement between the following:
- Structure of the OCS, with a section for reacting nodes and a section 
for reporting nodes
- Behavior related to managing OCS entries, with a section for reacting 
nodes and a section for reporting nodes
- Behavior driven by OCS entries (i.e.; behavior when there is an active 
OCS entry), with a section for reacting nodes and a section for 
reporting nodes.

Given the scope of the changes, I have attached a .txt document that 
contains the original section and a .txt document that contains the new 
section.  I have also attach a diff file for those how prefers those.

I have checked these changes into github.

Bon appétit.

Regards,

Steve


--------------090507060303030408070604
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I have done an extensive rewrite of the Overload Report Handling
    section.<br>
    <br>
    The requirements in the original version were split unevenly between
    various topics, including repeating of behavior from the Capability
    Announcement section.<br>
    <br>
    I split the requirement between the following:<br>
    - Structure of the OCS, with a section for reacting nodes and a
    section for reporting nodes<br>
    - Behavior related to managing OCS entries, with a section for
    reacting nodes and a section for reporting nodes<br>
    - Behavior driven by OCS entries (i.e.; behavior when there is an
    active OCS entry), with a section for reacting nodes and a section
    for reporting nodes.<br>
    <br>
    Given the scope of the changes, I have attached a .txt document that
    contains the original section and a .txt document that contains the
    new section.&nbsp; I have also attach a diff file for those how prefers
    those.<br>
    <br>
    I have checked these changes into github.<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <span dir="auto">Bon app&eacute;tit</span>.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
    <br>
  </body>
</html>

--------------090507060303030408070604--

--------------050001050707070804040105
Content-Type: text/plain; charset=UTF-8;
 name="original-overload-report-handling.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="original-overload-report-handling.txt"


4.2.  Overload Report Processing

4.2.1.  Overload Control State

   Both reacting and reporting nodes maintain Overload Control State
   (OCS) for active overload conditions.

4.2.1.1.  Overload Control State for Reacting Nodes

   A reacting node maintains the following OCS per supported Diameter
   application (the actual information stored is an implementation
   decision):

   o  A host-type Overload Control State for each Destination-Host to
      which it sends host-type requests and

   o  A realm-type Overload Control State for each Destination-Realm to
      which it sends realm-type requests.

   A host-type OCS entry may be identified by the pair of Application-Id
   and Host-Id.

   A realm-type OCS entry may be identified by the pair of Application-
   Id and Realm-Id.

   The host-type and realm-type OCS entries could include the following
   information:

   o  Sequence number (as received in OC-OLR)

   o  Time of expiry (derived from validity duration as received in the
      OC-OLR AVP and time of reception of the message carrying OC-OLR
      AVP)

   o  Selected Abatement Algorithm (as received in OC-Supported-Features
      AVP)

   o  Abatement Algorithm specific input data (as received within the
      OC-OLR AVP, for example, Reduction Percentage for the Loss
      abatement algorithm)

4.2.1.2.  Overload Control States for Reporting Nodes

   A reporting node maintains OCS entries per supported Diameter
   application and per supported (and eventually selected) Abatement
   Algorithm.





Korhonen, et al.         Expires April 25, 2015                [Page 14]

Internet-Draft                    DOIC                      October 2014


   An OCS entry may be identified by the pair of Application-Id and
   Abatement Algorithm.

   The OCS entry for a given pair of Application and Abatement Algorithm
   could include the information (the actual information stored is an
   implementation decision):

   o  Report type

   o  Sequence number

   o  Validity Duration

   o  Expiration Time

   o  Algorithm specific input data (for example, the Reduction
      Percentage for the Loss Abatement Algorithm)

4.2.1.3.  Reacting Node Maintainence of Overload Control State

   When a reacting node receives an OC-OLR AVP, it MUST determine if it
   is for an existing or new overload condition.

   The OLR is for an existing overload condition if the reacting node
   has an OCS that matches the received OLR.

   For a host report-type this means it matches the app-id and host-id
   in an existing host OCS entry.

   For a realm report-type this means it matches the app-id and realm-id
   in an existing realm OCS entry.

   If the OLR is for an existing overload condition then it MUST
   determine if the OLR is a retransmission or an update to the existing
   OLR.

   If the sequence number for the received OLR is greater than the
   sequence number stored in the matching OCS entry then the reacting
   node MUST update the matching OCS entry.

   If the sequence number for the received OLR is less than or equal to
   the sequence number in the matching OCS entry then the reacting node
   MUST silently ignore the received OLR.  The matching OCS MUST NOT be
   updated in this case.

   If the received OLR is for a new overload condition then the reacting
   node MUST generate a new OCS entry for the overload condition.




Korhonen, et al.         Expires April 25, 2015                [Page 15]

Internet-Draft                    DOIC                      October 2014


   For a host report-type this means it creates on OCS entry with the
   app-id of the application-id in the received message and host-id of
   the Origin-Host in the received message.

   For a realm report-type this means it creates on OCS entry with the
   app-id of the application-id in the received message and realm-id of
   the Origin-Realm in the received message.

   If the received OLR contains a validity duration of zero ("0") then
   the reacting node MUST update the OCS entry as being expired.

      Note that it is not necessarily appropriate to delete the OCS
      entry, as there is recommended behavior that the reacting node
      slowly returns to full traffic when ending an overload abatement
      period.

   The reacting node does not delete an OCS when receiving an answer
   message that does not contain an OC-OLR AVP (i.e. absence of OLR
   means "no change").

4.2.1.4.  Reporting Node Maintainence of Overload Control State

   A reporting node SHOULD create a new OCS entry when entering an
   overload condition.

      If the reporting node knows through absence of the OC-Supported-
      Features AVP in received messages that there are no reacting nodes
      supporting DOIC then the reporting node can choose to not create
      OCS entries.

   The reporting node MUST update an OCS entry when it needs to adjust
   the validity duration of the overload contition at reacting nodes.

      For instance, if the reporting node wishes to instruct reacting
      nodes to continue overload abatement for a longer period of time
      that originally communicated.  This also applies if the reporting
      node wishes to shorten the period of time that overload abatement
      is to continue.

   A reporting node MUST update an OCS entry when it wishes to adjust
   the any abatement algorithm specific parameters, including the
   reduction percentage used for the Loss abatement algorithm.

      For instance, if the reporting node wishes to change the reduction
      percentage either higher, if the overload condition has worsened,
      or lower, if the overload condition has improved, then the
      reporting node would update the appropriate OCS entry.




Korhonen, et al.         Expires April 25, 2015                [Page 16]

Internet-Draft                    DOIC                      October 2014


   The reporting node MUST update the sequence number associated with
   the OCS entry anytime the contents of the OCS entry are changed.
   This will result in a new sequence number being sent to reacing
   nodes, instructing the reacting nodes to process the OC-OLR AVP.

   If the OLR is for a new overload condition and there is no unexpired
   overload report for previous overload conditions at any reacting node
   then the reporting node MAY set the sequence number to any value.

   When generating sequence numbers for new overload conditions, the new
   sequence number MUST be greater than any sequence number in an active
   (unexpired) overload report previously sent by the reporting node.
   This property MUST hold over a reboot of the reporting node.

   A reporting node MUST update an OCS entry with a validity duration of
   zero ("0") when the overload condition ends.

   The reporting node MUST keep an OCS entry with a validity duration of
   zero ("0") for a period of time long enough to ensure that any
   reacting node OCS entry created as a result of the overload condition
   in the reporting node exists.

      This period of time can be determined by calculating the time the
      last overload report for the overload condition was sent plus the
      validity duration included in that overload report.

4.2.2.  Reacting Node Behavior

   Whenever a reacting node sends a request it MUST first determine if
   that request matches an active (non expired) OCS.

   If the request matches and active OCS then the reacting number MUST
   consider the request MUST for abatement treatment according to the
   abatement algorithm stored in the OCS.

   For the Loss abatement algorithm defined in this specification, see
   Section 5 for the abatement logic applied.

   If the reacting node is an agent then it MUST send an appropriate
   error as defined in section Section 7.

   In the case that the OCS entry validity duration expires or has a
   validity duration of zero ("0"), meaning that it the reporting node
   has explicitly signaled the end of the overload condition then
   abatement associated with the overload report MUST be ended in a
   controlled fashion.





Korhonen, et al.         Expires April 25, 2015                [Page 17]

Internet-Draft                    DOIC                      October 2014


4.2.3.  Reporting Node Behavior

   The operation on the reporting node is straight forward.

   If there is an active OCS entry then the reporting node SHOULD
   include the OC-OLR AVP in all answer messages to requests that
   contain the OC-Supported-Features AVP and that match the active OCS
   entry.

      A request matches if the application-id in the request matches the
      application-id in any active OCS entry and if the report-type in
      the OCS entry matches a report-type supported by the reporting
      node as indicated in the OC-Supported-Features AVP.

   The contents of the OC-OLR AVP MUST contain all information necessary
   for the abatement algorithm indicated in the OC-Supported-Features
   message also included in the answer message.

   A reporting node MAY choose to not resend an overload report to a
   reacting node if it can guarantee that this overload report is
   already active in the reacting node.

      Note - In some cases (e.g. when there are one or multiple agents
      in the path between reporting and reacting nodes, or when overload
      reports are discarded by reacting nodes) the reporting node may
      not be able to guarantee that the reacting node has received the
      report.

   A reporting node MUST NOT send overload reports of a type that has
   not been advertized as supported by the reacting node.

      Note that a reacting node advertises support for the host and
      realm report types by including the OC-Supported-Features AVP in
      the request.  Support for other report types must be explicitly
      indicated by a new feature bit in the OC-Feature-Vector AVP.

   A reporting node MAY rely on the OC-Validity-Duration AVP values for
   the implicit overload control state cleanup on the reacting node.
   However, it is RECOMMENDED that the reporting node always explicitly
   indicates the end of a overload condition.

   The reporting node SHOULD indicate the end of an overload occurrence
   by sending a new OLR with OC-Validity-Duration set to a value of zero
   ("0").  The reporting node SHOULD insure that all reacting nodes
   receive the updated overload report.

      All OLRs sent have an expiration time calculated by adding the
      validity-duration contained in the OLR to the time the message was



Korhonen, et al.         Expires April 25, 2015                [Page 18]

Internet-Draft                    DOIC                      October 2014


      sent.  Transit time for the OLR can be safely ignored.  The
      reporting node can ensure that all reacting nodes have received
      the OLR by continuing to send it in answer messages until the
      expiration time for all OLRs sent for that overload contition have
      expired.

   When a reporting node sends an OLR, it effectively delegates any
   necessary throttling to downstream nodes.  Therefore, the reporting
   node SHOULD NOT apply throttling to the set of messages to which the
   OLR applies.  That is, the same candidate set of messages SHOULD NOT
   be throttled multiple times.

   However, when the reporting node sends and OLR downstream, it MAY
   still be responsible to apply other abatement methods, such as
   diversion, or request throttling requests for other reasons.  For
   example, an agent or server might have a configured rate limit for
   each client, and throttle requests that exceed that limit, even if
   such requests had already been candidates for throttling by
   downstream nodes.

   This document assumes that there is a single source for realm-reports
   for a given realm, or that if multiple nodes can send realm reports,
   that each such node has full knowledge of the overload state of the
   entire realm.  A reacting node cannot distinguish between receiving
   realm-reports from a single node, or from multiple nodes.

   If multiple such nodes exist, they MUST ensure that realm-reports are
   kept in sync.  This includes synchronizing the sequence numbers as
   well as the reported overload state.  The method of doing so is up to
   the implementation.  One way to keep the sequence numbers in sync is
   to generate the sequence numbers based on system time.

      Editor's Note: There is not yet consensus on the above two
      paragraphs.

4.3.  Protocol Extensibility

   The overload control solution can be extended, e.g. with new traffic
   abatement algorithms, new report types or other new functionality.

   When defining a new extension a new feature bit MUST be defined for
   the OC-Feature-Vector.  This feature bit is used to communicate
   support for the new feature.

   The extention MAY define new AVPs for use in DOIC Capability
   Anouncement and for use in DOIC Overload reporting.  These new AVP
   SHOULD be defined to be extensions to the OC-Supported-Features and
   OC-OLR AVPs defined in this document.



Korhonen, et al.         Expires April 25, 2015                [Page 19]

Internet-Draft                    DOIC                      October 2014


   It should be noted that [RFC6733] defined Grouped AVP extension
   mechanisms apply.  This allows, for example, defining a new feature
   that is mandatory to be understood even when piggybacked on an
   existing applications.

   The handling of feature bits in the OC-Feature-Vector AVP that are
   not associated with overload abatement algorithms MUST be specified
   by the extensions that define the features.

   When defining new report type values, the corresponding specification
   MUST define the semantics of the new report types and how they affect
   the OC-OLR AVP handling.  The specification MUST also reserve a
   corresponding new feature in the OC-Feature-Vector AVP.

   The OC-OLR AVP can be expanded with optional sub-AVPs only if a
   legacy DOIC implementation can safely ignore them without breaking
   backward compatibility for the given OC-Report-Type AVP value.  If
   the new sub-AVPs imply new semantics for handling the indicated
   report type, then a new OC-Report-Type AVP value MUST be defined.

   New features (feature bits in the OC-Feature-Vector AVP) and report
   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As
   with any Diameter specification, new AVPs MUST also be registered
   with IANA.  See Section 8 for the required procedures.

--------------050001050707070804040105
Content-Type: text/plain; charset=UTF-8;
 name="new-overload-report-handling.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="new-overload-report-handling.txt"



4.2.  Overload Report Processing

4.2.1.  Overload Control State

   Both reacting and reporting nodes maintain Overload Control State
   (OCS) for active overload conditions.

4.2.1.1.  Overload Control State for Reacting Nodes

   A reacting node SHOULD maintain the following OCS per supported
   Diameter application:

   o  A host-type OCS entry for each Destination-Host to which it sends
      host-type requests and

   o  A realm-type OCS entry for each Destination-Realm to which it
      sends realm-type requests.

   A host-type OCS entry MAY be identified by the pair of Application-Id
   and Host-Id.

   A realm-type OCS entry MAY be identified by the pair of Application-
   Id and Realm-Id.

   The host-type and realm-type OCS entries MAY include the following
   information (the actual information stored is an implementation
   decision):

   o  Sequence number (as received in OC-OLR)

   o  Time of expiry (derived from validity duration as received in the
      OC-OLR AVP and time of reception of the message carrying OC-OLR
      AVP)

   o  Selected Abatement Algorithm (as received in OC-Supported-Features
      AVP)

   o  Abatement Algorithm specific input data (as received within the
      OC-OLR AVP, for example, Reduction Percentage for the Loss
      abatement algorithm)

4.2.1.2.  Overload Control State for Reporting Nodes

   A reporting node SHOULD maintain OCS entries per supported Diameter
   application and per supported (and eventually selected) Abatement
   Algorithm.





Korhonen, et al.         Expires April 25, 2015                [Page 14]

Internet-Draft                    DOIC                      October 2014


   An OCS entry MAY be identified by the pair of Application-Id and
   Abatement Algorithm.

   The OCS entry for a given pair of Application and Abatement Algorithm
   MAY include the information (the actual information stored is an
   implementation decision):

   o  Report type

   o  Sequence number

   o  Validity Duration

   o  Expiration Time

   o  Algorithm specific input data (for example, the Reduction
      Percentage for the Loss Abatement Algorithm)

4.2.1.3.  Reacting Node Maintainence of Overload Control State

   When a reacting node receives an OC-OLR AVP, it MUST determine if it
   is for an existing or new overload condition.

      For the remainder of this section the term OLR referres to the
      combination of the contents of the received OC-OLR AVP and the
      abatement algorithm indicated in the received OC-Supported-
      Features AVP.

   The OLR is for an existing overload condition if the reacting node
   has an OCS that matches the received OLR.

   For a host report-type this means it matches the app-id and host-id
   in an existing host OCS entry.

   For a realm report-type this means it matches the app-id and realm-id
   in an existing realm OCS entry.

   If the OLR is for an existing overload condition then it MUST
   determine if the OLR is a retransmission or an update to the existing
   OLR.

   If the sequence number for the received OLR is greater than the
   sequence number stored in the matching OCS entry then the reacting
   node MUST update the matching OCS entry.

   If the sequence number for the received OLR is less than or equal to
   the sequence number in the matching OCS entry then the reacting node




Korhonen, et al.         Expires April 25, 2015                [Page 15]

Internet-Draft                    DOIC                      October 2014


   MUST silently ignore the received OLR.  The matching OCS MUST NOT be
   updated in this case.

   If the received OLR is for a new overload condition then the reacting
   node MUST generate a new OCS entry for the overload condition.

   For a host report-type this means it creates on OCS entry with the
   app-id of the application-id in the received message and host-id of
   the Origin-Host in the received message.

   For a realm report-type this means it creates on OCS entry with the
   app-id of the application-id in the received message and realm-id of
   the Origin-Realm in the received message.

   If the received OLR contains a validity duration of zero ("0") then
   the reacting node MUST update the OCS entry as being expired.

      Note that it is not necessarily appropriate to delete the OCS
      entry, as there is recommended behavior that the reacting node
      slowly returns to full traffic when ending an overload abatement
      period.

   The reacting node does not delete an OCS when receiving an answer
   message that does not contain an OC-OLR AVP (i.e. absence of OLR
   means "no change").

4.2.1.4.  Reporting Node Maintainence of Overload Control State

   A reporting node SHOULD create a new OCS entry when entering an
   overload condition.

      If the reporting node knows through absence of the OC-Supported-
      Features AVP in received messages that there are no reacting nodes
      supporting DOIC then the reporting node can choose to not create
      OCS entries.

   When generating a new OCS entry the sequence nubmer MAY be set to any
   value if there is no unexpired overload report for previous overload
   conditions at any reacting node.

   When generating sequence numbers for new overload conditions, the new
   sequence number MUST be greater than any sequence number in an active
   (unexpired) overload report previously sent by the reporting node.
   This property MUST hold over a reboot of the reporting node.

   The reporting node MUST update an OCS entry when it needs to adjust
   the validity duration of the overload contition at reacting nodes.




Korhonen, et al.         Expires April 25, 2015                [Page 16]

Internet-Draft                    DOIC                      October 2014


      For instance, if the reporting node wishes to instruct reacting
      nodes to continue overload abatement for a longer period of time
      that originally communicated.  This also applies if the reporting
      node wishes to shorten the period of time that overload abatement
      is to continue.

   A reporting node MUST NOT update the abatement algorithm in an active
   OCS entry.

   A reporting node MUST update an OCS entry when it wishes to adjust
   the any abatement algorithm specific parameters, including the
   reduction percentage used for the Loss abatement algorithm.

      For instance, if the reporting node wishes to change the reduction
      percentage either higher, if the overload condition has worsened,
      or lower, if the overload condition has improved, then the
      reporting node would update the appropriate OCS entry.

   The reporting node MUST update the sequence number associated with
   the OCS entry anytime the contents of the OCS entry are changed.
   This will result in a new sequence number being sent to reacting
   nodes, instructing the reacting nodes to process the OC-OLR AVP.

   A reporting node SHOULD update an OCS entry with a validity duration
   of zero ("0") when the overload condition ends.

      If the reporting node knows that the OCS entries in the reacting
      nodes are near expiration then the reporting node can decide
      delete the OCS entry.

   The reporting node MUST keep an OCS entry with a validity duration of
   zero ("0") for a period of time long enough to ensure that any
   reacting node OCS entry created as a result of the overload condition
   in the reporting node exists.

      This period of time can be determined by calculating the time the
      last overload report for the overload condition was sent plus the
      validity duration included in that overload report.

4.2.2.  Reacting Node Behavior

   When a reacting node sends a request it MUST determine if that
   request matches an active OCS.

   If the request matches and active OCS then the reacting number MUST
   apply abatement treatment on the request.  The abatement treatment
   applied depends on the the abatement algorithm stored in the OCS.




Korhonen, et al.         Expires April 25, 2015                [Page 17]

Internet-Draft                    DOIC                      October 2014


   For the Loss abatement algorithm defined in this specification, see
   Section 5 for the abatement logic applied.

   If the abatement treatment results in throttling of the request and
   if the reacting node is an agent then the agent MUST send an
   appropriate error as defined in section Section 7.

   In the case that the OCS entry validity duration expires or has a
   validity duration of zero ("0"), meaning that it the reporting node
   has explicitly signaled the end of the overload condition then
   abatement associated with the overload abatement MUST be ended in a
   controlled fashion.

4.2.3.  Reporting Node Behavior

   The operation on the reporting node is straight forward.

   If there is an active OCS entry then the reporting node SHOULD
   include the OC-OLR AVP in all answer messages to requests that
   contain the OC-Supported-Features AVP and that match the active OCS
   entry.

      A request matches if the application-id in the request matches the
      application-id in any active OCS entry and if the report-type in
      the OCS entry matches a report-type supported by the reporting
      node as indicated in the OC-Supported-Features AVP.

   The contents of the OC-OLR AVP MUST contain all information necessary
   for the abatement algorithm indicated in the OC-Supported-Features
   message that is also included in the answer message.

   A reporting node MAY choose to not resend an overload report to a
   reacting node if it can guarantee that this overload report is
   already active in the reacting node.

      Note - In some cases (e.g. when there are one or more agents in
      the path between reporting and reacting nodes, or when overload
      reports are discarded by reacting nodes) the reporting node may
      not be able to guarantee that the reacting node has received the
      report.

   A reporting node MUST NOT send overload reports of a type that has
   not been advertized as supported by the reacting node.

      Note that a reacting node advertises support for the host and
      realm report types by including the OC-Supported-Features AVP in
      the request.  Support for other report types must be explicitly
      indicated by new feature bits in the OC-Feature-Vector AVP.



Korhonen, et al.         Expires April 25, 2015                [Page 18]

Internet-Draft                    DOIC                      October 2014


   A reporting node MAY rely on the OC-Validity-Duration AVP values for
   the implicit overload control state cleanup on the reacting node.
   However, it is RECOMMENDED that the reporting node always explicitly
   indicates the end of a overload condition.

   The reporting node SHOULD indicate the end of an overload occurrence
   by sending a new OLR with OC-Validity-Duration set to a value of zero
   ("0").  The reporting node SHOULD insure that all reacting nodes
   receive the updated overload report.

      All OLRs sent have an expiration time calculated by adding the
      validity-duration contained in the OLR to the time the message was
      sent.  Transit time for the OLR can be safely ignored.  The
      reporting node can ensure that all reacting nodes have received
      the OLR by continuing to send it in answer messages until the
      expiration time for all OLRs sent for that overload contition have
      expired.

   When a reporting node sends an OLR, it effectively delegates any
   necessary throttling to downstream nodes.  Therefore, the reporting
   node SHOULD NOT apply throttling to the set of messages to which the
   OLR applies.  That is, the same candidate set of messages SHOULD NOT
   be throttled multiple times.

   However, when the reporting node sends and OLR downstream, it MAY
   still be responsible to apply other abatement methods, such as
   diversion, or request throttling requests for other reasons.  For
   example, an agent or server might have a configured rate limit for
   each client, and throttle requests that exceed that limit, even if
   such requests had already been candidates for throttling by
   downstream nodes.

   This document assumes that there is a single source for realm-reports
   for a given realm, or that if multiple nodes can send realm reports,
   that each such node has full knowledge of the overload state of the
   entire realm.  A reacting node cannot distinguish between receiving
   realm-reports from a single node, or from multiple nodes.

   If multiple such nodes exist, they MUST ensure that realm-reports are
   kept in sync.  This includes synchronizing the sequence numbers as
   well as the reported overload state.  The method of doing so is up to
   the implementation.  One way to keep the sequence numbers in sync is
   to generate the sequence numbers based on system time.

      Editor's Note: There is not yet consensus on the above two
      paragraphs.





Korhonen, et al.         Expires April 25, 2015                [Page 19]

Internet-Draft                    DOIC                      October 2014


--------------050001050707070804040105
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 29</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 29</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td> </td><td class="right">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="delete">17</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  <span class="insert">16</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="delete">18</span></td><td> </td><td class="rblock">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  <span class="insert">17</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 14, line 9</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 14, line 9</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      If the agent modifies the OC-Supported-Features header sent to the</td><td> </td><td class="right">      If the agent modifies the OC-Supported-Features header sent to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reporting node then it might also need to modify the OC-Supported-</td><td> </td><td class="right">      reporting node then it might also need to modify the OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Features AVP sent to a reacting node in the subsequent answer</td><td> </td><td class="right">      Features AVP sent to a reacting node in the subsequent answer</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      message, as it cannot send an indication of support for features</td><td> </td><td class="right">      message, as it cannot send an indication of support for features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      that are not supported by the reacting node.</td><td> </td><td class="right">      that are not supported by the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.  Overload Report Processing</td><td> </td><td class="right">4.2.  Overload Report Processing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.  Overload Control State</td><td> </td><td class="right">4.2.1.  Overload Control State</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Both reacting and reporting nodes maintain <span class="delete">Overload Control State</span></td><td> </td><td class="rblock">   Both reacting and reporting nodes maintain <span class="insert">an overload control state</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   (OCS) for active overload <span class="delete">conditions.</span></td><td> </td><td class="rblock">   (OCS) for active overload <span class="insert">reports.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.1.  Overload Control State for Reacting Nodes</td><td> </td><td class="right">4.2.1.1.  Overload Control State for Reacting Nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A reacting node <span class="delete">SHOULD maintain</span> the following OCS per supported</td><td> </td><td class="rblock">   A reacting node <span class="insert">maintains</span> the following OCS per supported Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Diameter application:</td><td> </td><td class="rblock">   application:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">o  A host-type OCS entry for each Destination-Host to which it sends</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      host-type requests and</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   o  A realm-type OCS entry for each Destination-Realm to which it</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      sends realm-type requests.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A host-type <span class="delete">OCS entry MAY be identified by the pair of Application-Id</span></td><td> </td><td class="rblock">   <span class="insert">o</span>  A host-type <span class="insert">Overload Control State for each Destination-Host</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   and <span class="delete">Host-Id.</span></td><td> </td><td class="rblock"><span class="insert">      towards which it sends host-type requests</span> and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A realm-type <span class="delete">OCS entry MAY be identified by the pair of Application-</span></td><td> </td><td class="rblock">   <span class="insert">o</span>  A realm-type <span class="insert">Overload Control State for each Destination-Realm</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Id and Realm-Id.</span></td><td> </td><td class="rblock"><span class="insert">      towards which it sends realm-type requests.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The</span> host-type and realm-type <span class="delete">OCS entries MAY</span> include the following</td><td> </td><td class="rblock">   <span class="insert">A</span> host-type <span class="insert">Overload Control State may be identified by the pair of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">information (the actual information stored is an implementation</span></td><td> </td><td class="rblock"><span class="insert">   Application-Id</span> and <span class="insert">Destination-Host.  A</span> realm-type <span class="insert">Overload Control</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   decision):</span></td><td> </td><td class="rblock"><span class="insert">   State may be identified by the pair of Application-Id and</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Destination-Realm.  The host-type/realm-type Overload Control State</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   for a given pair of Application and Destination-Host / Destination-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Realm could</span> include the following <span class="insert">information:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Sequence number (as received in OC-OLR)</td><td> </td><td class="right">   o  Sequence number (as received in OC-OLR)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  Time of expiry <span class="delete">(derived</span> from validity duration as received in <span class="delete">the</span></td><td> </td><td class="rblock">   o  Time of expiry <span class="insert">(deviated</span> from validity duration as received in <span class="insert">OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      OC-OLR AVP</span> and time of <span class="delete">reception of the message carrying OC-OLR</span></td><td> </td><td class="rblock"><span class="insert">      OLR</span> and time of <span class="insert">reception)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      AVP)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  Selected Abatement Algorithm (as received in <span class="delete">OC-Supported-Features</span></td><td> </td><td class="rblock">   o  Selected Abatement Algorithm (as received in <span class="insert">OC-Supported-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      AVP)</span></td><td> </td><td class="rblock"><span class="insert">      Features)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  <span class="delete">Abatement</span> Algorithm specific input data (as received within <span class="delete">the</span></td><td> </td><td class="rblock">   o  Algorithm specific input data (as received within <span class="insert">OC-OLR, e.g.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      OC-OLR AVP, for example,</span> Reduction Percentage for <span class="delete">the Loss</span></td><td> </td><td class="rblock">      Reduction Percentage for <span class="insert">Loss)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      abatement algorithm)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">4.2.1.2.  Overload Control State for Reporting Nodes</td><td> </td><td class="rblock">4.2.1.2.  Overload Control State<span class="insert">s</span> for Reporting Nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A reporting node <span class="delete">SHOULD maintain OCS entries</span> per supported Diameter</td><td> </td><td class="rblock">   A reporting node <span class="insert">maintains</span> per supported Diameter application and per</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   application and per supported (and eventually selected) Abatement</td><td> </td><td class="rblock">   supported (and eventually selected) Abatement <span class="insert">Algorithm an Overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Algorithm.</span></td><td> </td><td class="rblock"><span class="insert">   Control State.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   An <span class="delete">OCS entry MAY</span> be identified by the pair of Application-Id and</td><td> </td><td class="rblock">   An <span class="insert">Overload Control State may</span> be identified by the pair of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Abatement Algorithm.</td><td> </td><td class="rblock">   Application-Id and <span class="insert">supported</span> Abatement Algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The <span class="delete">OCS entry</span> for a given pair of Application and Abatement Algorithm</td><td> </td><td class="rblock">   The <span class="insert">Overload Control State</span> for a given pair of Application and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">MAY</span> include the <span class="delete">information (the actual information stored is an</span></td><td> </td><td class="rblock">   Abatement Algorithm <span class="insert">could</span> include the <span class="insert">information:</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   implementation decision):</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Report type</td><td> </td><td class="right">   o  Report type</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Sequence number</td><td> </td><td class="right">   o  Sequence number</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  Validity Duration</td><td> </td><td class="rblock">   o  Validity Duration and <span class="insert">Expiry Time</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">o  Expiration Time</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   o  Algorithm specific input data (for example, the Reduction</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Percentage for the Loss Abatement Algorithm)</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">4.2.1.3.  Reacting Node Maintainence of Overload Control State</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   When a reacting node receives an OC-OLR AVP, it MUST determine if it</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   is for an existing or new overload condition.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      For the remainder of this section the term OLR referres to the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      combination of the contents of the received OC-OLR AVP and the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      abatement algorithm indicated in the received OC-Supported-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Features AVP.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   The OLR is for an existing overload condition if the reacting node</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   has an OCS that matches the received OLR.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For a host report-type this means it matches the app-id and host-id</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   in an existing host OCS entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For a realm report-type this means it matches the app-id</span> and <span class="delete">realm-id</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   in an existing realm OCS entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the OLR is for an existing overload condition then it MUST</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   determine if the OLR is a retransmission or an update to the existing</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   OLR.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the sequence number for the received OLR is greater than the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   sequence number stored in the matching OCS entry then the reacting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   node MUST update the matching OCS entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the sequence number for the received OLR is less than or equal to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the sequence number in the matching OCS entry then the reacting node</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   MUST silently ignore the received OLR.  The matching OCS MUST NOT be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   updated in this case.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the received OLR is for a new overload condition then the reacting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   node MUST generate a new OCS entry for the overload condition.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For a host report-type this means it creates on OCS entry with the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   app-id of the application-id in the received message and host-id of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the Origin-Host in the received message.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   For a realm report-type this means it creates on OCS entry with the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   app-id of the application-id in the received message and realm-id of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the Origin-Realm in the received message.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If the received OLR contains a validity duration of zero ("0") then</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the reacting node MUST update the OCS entry as being expired.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Note that it is not necessarily appropriate to delete the OCS</span></td><td> </td><td class="rblock">   <span class="insert">o  Algorithm specific input data (e.g.  Reduction Percentage for</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      entry, as there is recommended behavior that the reacting node</span></td><td> </td><td class="rblock"><span class="insert">      Loss)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      slowly returns to full traffic when ending an overload abatement</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      period.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reacting node does not delete an OCS when receiving an answer</span></td><td> </td><td class="rblock"><span class="insert">4.2.1.3.  Maintaining Overload Control State</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   message that does not contain an OC-OLR AVP (i.e. absence of OLR</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   means "no change").</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">4.2.1.4.  Reporting Node Maintainence</span> of <span class="delete">Overload Control State</span></td><td> </td><td class="rblock">   <span class="insert">Reacting nodes create a host-type OCS identified by OCS-Id = (app-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   id,host-id) when receiving an answer message</span> of <span class="insert">application app-id</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   containing an Orig-Host of host-id and a host-type OC-OLR AVP unless</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   such host-type OCS already exists.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A reporting node SHOULD</span> create a <span class="delete">new</span> OCS <span class="delete">entry</span> when <span class="delete">entering</span> an</td><td> </td><td class="rblock">   <span class="insert">Reacting nodes</span> create a <span class="insert">realm-type</span> OCS <span class="insert">identified by OCS-Id = (app-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">overload condition.</span></td><td> </td><td class="rblock"><span class="insert">   id,realm-id)</span> when <span class="insert">receiving</span> an <span class="insert">answer message of application app-id</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   unless such realm type OCS already exists.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">If the reporting node knows through absence of the OC-Supported-</span></td><td> </td><td class="rblock">   <span class="insert">Reacting</span> nodes <span class="insert">delete an</span> OCS <span class="insert">when it expires (i.e. when current time</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Features AVP in received messages that there are no reacting</span> nodes</td><td> </td><td class="rblock"><span class="insert">   minus reception time is greater than validity duration).</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">supporting DOIC then the reporting node can choose to not create</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      OCS <span class="delete">entries.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When generating a new</span> OCS <span class="delete">entry the sequence nubmer MAY be set to any</span></td><td> </td><td class="rblock">   <span class="insert">Reacting nodes also delete on</span> OCS <span class="insert">with an updated OLR</span> is <span class="insert">received</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   value if there</span> is <span class="delete">no unexpired overload report for previous overload</span></td><td> </td><td class="rblock"><span class="insert">   with a validity duration of zero.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   conditions at any reacting node.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0021" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When generating sequence numbers for new overload conditions,</span> the <span class="delete">new</span></td><td> </td><td class="rblock">   <span class="insert">Reacting nodes update</span> the <span class="insert">host-type OCS identified by OCS-Id = (app-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   sequence number <span class="delete">MUST be greater</span> than <span class="delete">any sequence number in an active</span></td><td> </td><td class="rblock"><span class="insert">   id,host-id) when receiving an answer message of application app-id</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (unexpired) overload report previously sent by</span> the <span class="delete">reporting node.</span></td><td> </td><td class="rblock"><span class="insert">   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   This property MUST hold over a reboot of the reporting node.</span></td><td> </td><td class="rblock">   sequence number <span class="insert">higher</span> than the <span class="insert">stored sequence number.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0022" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reporting node MUST</span> update <span class="delete">an</span> OCS <span class="delete">entry</span> when <span class="delete">it needs to adjust</span></td><td> </td><td class="rblock">   <span class="insert">Reacting nodes</span> update <span class="insert">the realm-type</span> OCS <span class="insert">identified by OCS-Id = (app-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the validity duration</span> of the <span class="delete">overload contition at reacting nodes.</span></td><td> </td><td class="rblock"><span class="insert">   id,realm-id)</span> when <span class="insert">receiving an answer message of application app-id</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   containing an Orig-Realm</span> of <span class="insert">realm-id and a realm-type OC-OLR AVP with</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   a sequence number higher than</span> the <span class="insert">stored sequence number.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0023" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">For instance, if the reporting node wishes to instruct reacting</span></td><td> </td><td class="rblock">   <span class="insert">Reacting</span> nodes <span class="insert">do not delete an OCS when receiving an answer message</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      nodes <span class="delete">to continue overload abatement for a longer period of time</span></td><td> </td><td class="rblock">   that <span class="insert">does not contain an OC-OLR AVP (i.e. absence</span> of <span class="insert">OLR means "no</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      that <span class="delete">originally communicated.  This also applies if the reporting</span></td><td> </td><td class="rblock"><span class="insert">   change").</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      node wishes to shorten the period</span> of <span class="delete">time that overload abatement</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      is to continue.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0024" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A</span> reporting node <span class="delete">MUST NOT update the abatement algorithm in an active</span></td><td> </td><td class="rblock">   <span class="insert">Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   OCS <span class="delete">entry.</span></td><td> </td><td class="rblock"><span class="insert">   when receiving a request of application app-id containing an OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Supported-Features AVP indicating support of the Abatement Algorithm</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Alg (which the</span> reporting node <span class="insert">selects) while being overloaded, unless</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   such</span> OCS <span class="insert">already exists.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0025" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A reporting node MUST update</span> an OCS <span class="delete">entry</span> when it <span class="delete">wishes to adjust</span></td><td> </td><td class="rblock">   <span class="insert">Reporting nodes delete</span> an OCS when it <span class="insert">expires.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the any abatement algorithm specific parameters, including the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reduction percentage used for the Loss abatement algorithm.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0026" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">For instance, if the reporting node wishes to change the reduction</span></td><td> </td><td class="rblock">   <span class="insert">Reporting nodes</span> update the OCS <span class="insert">identified by OCS-Id = (app-id,Alg)</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      percentage either higher, if the overload condition has worsened,</span></td><td> </td><td class="rblock"><span class="insert">   when they detect the need to modify the requested amount of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      or lower, if the overload condition has improved, then the</span></td><td> </td><td class="rblock"><span class="insert">   application app-id traffic reduction.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      reporting node would</span> update the <span class="delete">appropriate</span> OCS <span class="delete">entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0027" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reporting node MUST update the sequence number associated with</span></td><td> </td><td class="rblock"><span class="insert">4.2.2.  Reacting Node Behavior</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the OCS entry anytime the contents of the OCS entry are changed.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   This will result in a new sequence number being sent to reacting</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   nodes, instructing the reacting nodes to process the OC-OLR AVP.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0028" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A reporting</span> node <span class="delete">SHOULD update</span> an <span class="delete">OCS entry with</span> a <span class="delete">validity duration</span></td><td> </td><td class="rblock">   <span class="insert">Once a reacting</span> node <span class="insert">receives</span> an <span class="insert">OC-OLR AVP from</span> a <span class="insert">reporting node, it</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of zero ("0") when</span> the overload <span class="delete">condition ends.</span></td><td> </td><td class="rblock"><span class="insert">   applies traffic abatement based on</span> the <span class="insert">selected algorithm with the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   reporting node and the current</span> overload <span class="insert">condition.  The reacting node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   learns the reporting node supported abatement algorithms directly</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   from the received answer message containing the OC-Supported-Features</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   AVP.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0029" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">If</span> the <span class="delete">reporting node knows</span> that the <span class="delete">OCS entries in the reacting</span></td><td> </td><td class="rblock">   <span class="insert">The received OC-Supported-Features AVP does not change</span> the <span class="insert">existing</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      nodes are near expiration then</span> the reporting node <span class="delete">can decide</span></td><td> </td><td class="rblock"><span class="insert">   overload condition and/or traffic abatement algorithm settings if the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      delete</span> the <span class="delete">OCS entry.</span></td><td> </td><td class="rblock"><span class="insert">   OC-Sequence-Number AVP contains a value</span> that <span class="insert">is equal to</span> the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">previously received/recorded value.  If the OC-Supported-Features AVP</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   is received for the first time for</span> the reporting node <span class="insert">or the OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Sequence-Number AVP value is less than the previously received/</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   recorded value (and is outside the valid overflow window), then</span> the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">sequence number is stale (e.g. an intentional or unintentional</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   replay) and SHOULD be silently discarded.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0030" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The reporting node MUST keep an OCS entry with a validity duration of</span></td><td> </td><td class="rblock">   <span class="insert">As described in Section 6.3, the OC-OLR AVP contains the necessary</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   zero ("0")</span> for <span class="delete">a period of time long enough to ensure that any</span></td><td> </td><td class="rblock"><span class="insert">   information</span> for the overload condition <span class="insert">on</span> the reporting <span class="insert">node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reacting node OCS entry created as a result of</span> the overload condition</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">in</span> the reporting <span class="delete">node exists.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0031" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">This period</span> of <span class="delete">time can be determined</span> by <span class="delete">calculating</span> the <span class="delete">time</span> the</td><td> </td><td class="rblock">   <span class="insert">From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">last</span> overload report for the <span class="delete">overload condition was</span> sent <span class="delete">plus</span> the</td><td> </td><td class="rblock"><span class="insert">   node learns whether the overload condition report concerns a specific</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">validity duration included</span> in that <span class="delete">overload report.</span></td><td> </td><td class="rblock"><span class="insert">   host (as identified by the Origin-Host AVP</span> of <span class="insert">the answer message</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   containing the OC-OLR AVP) or the entire realm (as identified</span> by the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">Origin-Realm AVP of the answer message containing the OC-OLR AVP).</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The reacting node learns the Diameter application to which</span> the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   overload report <span class="insert">applies from the Application-ID of the answer message</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   containing the OC-OLR AVP.  The reacting node MUST use this</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   information as an input</span> for <span class="insert">its traffic abatement algorithm.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   idea is that</span> the <span class="insert">reacting node applies different handling of the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   traffic abatement, whether</span> sent <span class="insert">request messages are targeted to a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   specific host (identified by</span> the <span class="insert">Diameter-Host AVP</span> in <span class="insert">the request) or</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to any host in a realm (when only the Destination-Realm AVP is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   present in the request).  Note</span> that <span class="insert">future specifications MAY define</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   new OC-Report-Type AVP values that imply different handling of the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   OC-OLR AVP.  For example, in a form of new additional AVPs inside the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Grouped OC-OLR AVP that would define report target in a finer</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   granularity than just a host.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0032" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">4.2.2.  Reacting Node Behavior</span></td><td> </td><td class="rblock">   <span class="insert">If the OC-OLR AVP is received for the first time, the reacting node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   MUST create overload control state associated with the related realm</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   or a specific host in the realm identified in the message carrying</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the OC-OLR AVP, as described in Section 4.2.1.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0033" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When a</span> reacting node <span class="delete">sends a request it</span> MUST <span class="delete">determine if that</span></td><td> </td><td class="rblock">   <span class="insert">If the value of the OC-Sequence-Number AVP contained in the received</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   request matches an active OCS.</span></td><td> </td><td class="rblock"><span class="insert">   OC-OLR AVP is equal to or less than the value stored in an existing</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   overload control state, the received OC-OLR AVP SHOULD be silently</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   discarded.  If the value of the OC-Sequence-Number AVP contained in</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the received OC-OLR AVP is greater than the value stored in an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   existing overload control state or there is no previously recorded</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   sequence number, the</span> reacting node MUST <span class="insert">update the overload control</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   state associated with the realm or the specific node in the realm.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0034" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">If the request matches and active OCS then</span> the reacting <span class="delete">number</span> MUST</td><td> </td><td class="rblock">   <span class="insert">When an overload control state is created or updated,</span> the reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   apply <span class="delete">abatement treatment on</span> the <span class="delete">request.  The</span> abatement <span class="delete">treatment</span></td><td> </td><td class="rblock">   <span class="insert">node</span> MUST apply the <span class="insert">traffic</span> abatement <span class="insert">requested in</span> the <span class="insert">OC-OLR AVP</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   applied depends on</span> the the <span class="delete">abatement</span> algorithm <span class="delete">stored</span> in the <span class="delete">OCS.</span></td><td> </td><td class="rblock"><span class="insert">   using</span> the algorithm <span class="insert">announced</span> in the <span class="insert">OC-Supported-Features AVP</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   contained in the received answer message along with the OC-OLR AVP.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0035" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">For</span> the <span class="delete">Loss abatement algorithm defined</span> in <span class="delete">this specification, see</span></td><td> </td><td class="rblock">   <span class="insert">The validity duration of</span> the <span class="insert">overload information contained</span> in <span class="insert">the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Section 5 for the abatement logic applied.</span></td><td> </td><td class="rblock"><span class="insert">   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   AVP or is implicitly equals to the default value if the OC-Validity-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Duration AVP is absent.  The reacting node MUST maintain the validity</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   duration in the overload control state.  Once the validity duration</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   times out, the reacting node MUST assume the overload condition</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   reported in a previous OC-OLR AVP has ended.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0036" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">If</span> the <span class="delete">abatement treatment results</span> in <span class="delete">throttling of</span> the <span class="delete">request</span> and</td><td> </td><td class="rblock">   <span class="insert">A value of zero ("0") received in</span> the <span class="insert">OC-Validity-Duration</span> in <span class="insert">an</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">if</span> the <span class="delete">reacting node</span> is <span class="delete">an agent then the agent MUST send an</span></td><td> </td><td class="rblock"><span class="insert">   updated overload report indicates that</span> the <span class="insert">overload condition has</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   appropriate error as defined in section Section 7.</span></td><td> </td><td class="rblock"><span class="insert">   ended</span> and <span class="insert">that</span> the <span class="insert">overload state</span> is <span class="insert">no longer valid.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0037" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   In the case that the <span class="delete">OCS entry</span> validity duration expires or <span class="delete">has a</span></td><td> </td><td class="rblock">   In the case that the validity duration expires or <span class="insert">is</span> explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   validity duration of zero ("0"), meaning that it the reporting node</span></td><td> </td><td class="rblock">   signaled <span class="insert">as being no longer valid</span> the <span class="insert">state associated with</span> the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   has</span> explicitly signaled the <span class="delete">end of</span> the overload <span class="delete">condition then</span></td><td> </td><td class="rblock">   overload <span class="insert">report MUST be removed and any</span> abatement associated with the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   abatement associated with the overload <span class="delete">abatement</span> MUST be ended in a</td><td> </td><td class="rblock">   overload <span class="insert">report</span> MUST be ended in a controlled fashion.  <span class="insert">After</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   controlled fashion.</td><td> </td><td class="rblock"><span class="insert">   removing the overload state the sequence number MUST NOT be used for</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   future comparisons of sequence numbers.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.3.  Reporting Node Behavior</td><td> </td><td class="right">4.2.3.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0038" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The operation on the</span> reporting node is <span class="delete">straight forward.</span></td><td> </td><td class="rblock">   <span class="insert">A</span> reporting node is <span class="insert">a Diameter</span> node <span class="insert">inserting an</span> OC-OLR AVP in <span class="insert">a</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"><span class="insert">   Diameter message in order</span> to <span class="insert">inform a reacting node about an overload</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   If there is an active OCS entry then the reporting</span> node <span class="delete">SHOULD</span></td><td> </td><td class="rblock"><span class="insert">   condition</span> and <span class="insert">request Diameter traffic abatement.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   include the</span> OC-OLR AVP in <span class="delete">all answer messages</span> to <span class="delete">requests that</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   contain the OC-Supported-Features AVP</span> and <span class="delete">that match the active OCS</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0039" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">A request matches if the application-id in the request matches the</span></td><td> </td><td class="rblock">   <span class="insert">The operation on</span> the <span class="insert">reporting node is straight forward.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      application-id in any active OCS entry and if</span> the <span class="delete">report-type in</span></td><td> </td><td class="rblock"><span class="insert">   reporting node learns</span> the <span class="insert">capabilities of</span> the <span class="insert">reacting</span> node <span class="insert">when it</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      the <span class="delete">OCS entry matches a report-type supported by</span> the <span class="delete">reporting</span></td><td> </td><td class="rblock"><span class="insert">   receives</span> the OC-Supported-Features <span class="insert">AVP as part of any Diameter</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      node <span class="delete">as indicated in</span> the OC-Supported-Features <span class="delete">AVP.</span></td><td> </td><td class="rblock"><span class="insert">   request message.  Since the loss abatement algorithm Section 5 is</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   mandatory to implement DOIC can always be enabled between these DOIC</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   nodes See Section 4.1 for further discussion on the capability and</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   feature announcement.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0040" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The contents</span> of the OC-OLR AVP <span class="delete">MUST contain all information necessary</span></td><td> </td><td class="rblock">   <span class="insert">When a traffic reduction is required due to an overload condition and</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   for the abatement algorithm indicated in the OC-Supported-Features</span></td><td> </td><td class="rblock"><span class="insert">   the overload control solution is supported by the sender</span> of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   message that is also included</span> in the <span class="delete">answer message.</span></td><td> </td><td class="rblock">   <span class="insert">Diameter request, the reporting node SHOULD include an OC-Supported-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Features AVP and an</span> OC-OLR AVP in the <span class="insert">corresponding Diameter answer.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY choose to not resend an overload report to a</td><td> </td><td class="right">   A reporting node MAY choose to not resend an overload report to a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reacting node if it can guarantee that this overload report is</td><td> </td><td class="right">   reacting node if it can guarantee that this overload report is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   already active in the reacting node.</td><td> </td><td class="right">   already active in the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0041" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      Note - In some cases (e.g. when there are one or <span class="delete">more</span> agents in</td><td> </td><td class="rblock">      Note - In some cases (e.g. when there are one or <span class="insert">multiple</span> agents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      the path between reporting and reacting nodes, or when overload</td><td> </td><td class="rblock">      in the path between reporting and reacting nodes, or when overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reports are discarded by reacting nodes) the reporting node may</td><td> </td><td class="right">      reports are discarded by reacting nodes) the reporting node may</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      not be able to guarantee that the reacting node has received the</td><td> </td><td class="right">      not be able to guarantee that the reacting node has received the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      report.</td><td> </td><td class="right">      report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0042" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">The OC-OLR AVP contains the required traffic reduction and the OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Supported-Features AVP indicates the traffic abatement algorithm to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   apply.  This algorithm MUST be one of the algorithms advertised by</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the request sender.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MUST NOT send overload reports of a type that has</td><td> </td><td class="right">   A reporting node MUST NOT send overload reports of a type that has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   not been advertized as supported by the reacting node.</td><td> </td><td class="right">   not been advertized as supported by the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that a reacting node advertises support for the host and</td><td> </td><td class="right">      Note that a reacting node advertises support for the host and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      realm report types by including the OC-Supported-Features AVP in</td><td> </td><td class="right">      realm report types by including the OC-Supported-Features AVP in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the request.  Support for other report types must be explicitly</td><td> </td><td class="right">      the request.  Support for other report types must be explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0043" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      indicated by new feature <span class="delete">bits</span> in the OC-Feature-Vector AVP.</td><td> </td><td class="rblock">      indicated by <span class="insert">a</span> new feature <span class="insert">bit</span> in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">If OLR is for a new overload condition and there is no unexpired</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   overload report for previous overload conditions at any reacting node</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   then the reporting node MAY set the sequence number to any value.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The reporting node MAY update the overload report with new reduction</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   percentages.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The reporting node MAY extend the validatity duration for an existing</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   overload report by sending a OLR with either the same or a new</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   validity duration value.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   When sending an overload report with new values in any of the sub</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   AVPs for an existing overload condition, the reporting node MUST</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   increase the sequence number in the new OLR sent.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   When generating sequence numbers for new overload conditions, the new</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   sequence number MUST be greater than any sequence number in an active</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   (unexpired) overload report previously sent by the reporting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   This property MUST hold over a reboot of the reporting node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td> </td><td class="right">   A reporting node MAY rely on the OC-Validity-Duration AVP values for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implicit overload control state cleanup on the reacting node.</td><td> </td><td class="right">   the implicit overload control state cleanup on the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, it is RECOMMENDED that the reporting node always explicitly</td><td> </td><td class="right">   However, it is RECOMMENDED that the reporting node always explicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicates the end of a overload condition.</td><td> </td><td class="right">   indicates the end of a overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node SHOULD indicate the end of an overload occurrence</td><td> </td><td class="right">   The reporting node SHOULD indicate the end of an overload occurrence</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td> </td><td class="right">   by sending a new OLR with OC-Validity-Duration set to a value of zero</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td> </td><td class="right">   ("0").  The reporting node SHOULD insure that all reacting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receive the updated overload report.</td><td> </td><td class="right">   receive the updated overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0044" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">All OLRs sent have an expiration time calculated by adding the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      validity-duration contained in the OLR to the time the message was</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      sent.  Transit time for the OLR can be safely ignored.  The</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      reporting node can ensure that all reacting nodes have received</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the OLR by continuing to send it in answer messages until the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      expiration time for all OLRs sent for that overload contition have</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      expired.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a reporting node sends an OLR, it effectively delegates any</td><td> </td><td class="right">   When a reporting node sends an OLR, it effectively delegates any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   necessary throttling to downstream nodes.  Therefore, the reporting</td><td> </td><td class="right">   necessary throttling to downstream nodes.  Therefore, the reporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node SHOULD NOT apply throttling to the set of messages to which the</td><td> </td><td class="right">   node SHOULD NOT apply throttling to the set of messages to which the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OLR applies.  That is, the same candidate set of messages SHOULD NOT</td><td> </td><td class="right">   OLR applies.  That is, the same candidate set of messages SHOULD NOT</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be throttled multiple times.</td><td> </td><td class="right">   be throttled multiple times.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   However, when the reporting node sends and OLR downstream, it MAY</td><td> </td><td class="right">   However, when the reporting node sends and OLR downstream, it MAY</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   still be responsible to apply other abatement methods, such as</td><td> </td><td class="right">   still be responsible to apply other abatement methods, such as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   diversion, or request throttling requests for other reasons.  For</td><td> </td><td class="right">   diversion, or request throttling requests for other reasons.  For</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   example, an agent or server might have a configured rate limit for</td><td> </td><td class="right">   example, an agent or server might have a configured rate limit for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   each client, and throttle requests that exceed that limit, even if</td><td> </td><td class="right">   each client, and throttle requests that exceed that limit, even if</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   such requests had already been candidates for throttling by</td><td> </td><td class="right">   such requests had already been candidates for throttling by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   downstream nodes.</td><td> </td><td class="right">   downstream nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0045" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      <span class="insert">All OLRs sent have an expiration time calculated by adding the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      validity-duration contained in the OLR to the time the message was</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      sent.  Transit time for the OLR can be safely ignored.  The</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      reporting node can ensure that all reacting nodes have received</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the OLR by continuing to send it in answer messages until the</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      expiration time for all OLRs sent for that overload contition have</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      expired.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This document assumes that there is a single source for realm-reports</td><td> </td><td class="right">   This document assumes that there is a single source for realm-reports</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for a given realm, or that if multiple nodes can send realm reports,</td><td> </td><td class="right">   for a given realm, or that if multiple nodes can send realm reports,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that each such node has full knowledge of the overload state of the</td><td> </td><td class="right">   that each such node has full knowledge of the overload state of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   entire realm.  A reacting node cannot distinguish between receiving</td><td> </td><td class="right">   entire realm.  A reacting node cannot distinguish between receiving</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   realm-reports from a single node, or from multiple nodes.</td><td> </td><td class="right">   realm-reports from a single node, or from multiple nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If multiple such nodes exist, they MUST ensure that realm-reports are</td><td> </td><td class="right">   If multiple such nodes exist, they MUST ensure that realm-reports are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   kept in sync.  This includes synchronizing the sequence numbers as</td><td> </td><td class="right">   kept in sync.  This includes synchronizing the sequence numbers as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   well as the reported overload state.  The method of doing so is up to</td><td> </td><td class="right">   well as the reported overload state.  The method of doing so is up to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the implementation.  One way to keep the sequence numbers in sync is</td><td> </td><td class="right">   the implementation.  One way to keep the sequence numbers in sync is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to generate the sequence numbers based on system time.</td><td> </td><td class="right">   to generate the sequence numbers based on system time.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0046" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Editor's Note: There is not yet consensus on the above two</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      paragraphs.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.3.  Protocol Extensibility</td><td> </td><td class="right">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The extention MAY define new AVPs for use in DOIC Capability</td><td> </td><td class="right">   The extention MAY define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 46 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>184 lines changed or deleted</i></th><th><i> </i></th><th><i>184 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 25, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 22, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 25, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . .
  . . . .  16\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  17\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26\n     6.7.  OC-Reducti
 on-Percentage AVP . . . . . . . . . . . . . . .  27\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  28\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  29\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  29\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  29\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  31\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . 
 . . . . . . . . . . . . .  32\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  33\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  33\n   Appendix A.  Issues left for future specifications  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  34\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  34\n     A.3.  Requirements Conformance Analysis . . . . . . . . . . . .  34\n     A.4.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  34\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  34\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  35\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  35\n     C.2.  Application Type Overload Implications  . . . . . . . . .  36\n     C.3
 .  Request Transaction Classification  . . . . . . . . . . .  37\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.  See Appendix A for a list of\n   extensions that are currently being considered.  See Appendix A.3 for\n   an analysis of the conformance to the requirements specified in\n   [RFC7068].\n\n   The solution defined in this specification addresses 
 Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload con
 trol.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of reque
 sts that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a Diameter Client or Diameter\n      Server dropping requests, or a Diameter Agent rejecting requests\n      with appropriate error responses.  In extreme cases reporting\n      nodes can also throttle requests when the requested reductions in\n      traffic does not sufficiently address the overload scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) solution allows\n   Diameter nodes to request other nodes to perform overload abatemen
 t\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,\n   even 
 though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter Servers\n   can send requests towards Diameter Clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (Section 6.2) into existing reques
 ts and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm (Section 5).  Futu
 re specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node 
 knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   While a reporting node sends OLRs
  to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unchanged.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application messages.\n   This is made possible by adding overload control top-level AVPs, the\n   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into\n   existing commands when t
 he corresponding Command Code Format (CCF)\n   specification allows adding new optional AVPs (see Section 1.3.4 of\n   [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all request messages originated or relayed\n   by the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "repo
 rting node").\n   Therefore, in a typical "client-server" deployment, the Diameter\n   Client MAY report its overload condition to the Diameter Server for\n   any Diameter Server initiated message exchange.  An example of such\n   is the Diameter Server requesting a re-authentication from a Diameter\n   Client.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solution supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is referred to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solut
 ion inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages 
 to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      proper
 ly handled.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken not to introduce\n      interoperability issues for downstream or upstream DOIC nodes
 .\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, a sequence number, the length of time\n   that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to requests that do not have a Destination-\n   Host AVP when the selected route for the request is a connection to\n   the impacted host.\n\n   Realm reports apply to realm-route
 d requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the Diameter application.  A realm report\n   will generally impact the traffic sent to multiple hosts and, as\n   such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the conditi
 on.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The report
 ing node sends an overload report\n   with a duration of zero to indicate that the overload condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solution is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in th
 e OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurrances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If necessary, new extensions can also define new top-level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overlo
 ad information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _-------
 ---------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting nod
 e MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n      Not all DOIC features will necessarily apply to all transactions.\n      For instance, there may be a future extension that only applies to\n      session based applications.  A reacting node that supports this\n      extension can choose to not include it for non session based\n      applications.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken
  when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   If the request message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 12]\n_\nI
 nternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included MUST indicate the abatement algorithm\n   the reporting node wants the reacting node to use when the reporting\n   node enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer mes
 sages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP are based on local reporting node\n      policy.\n\n4.1.3.  Agent Behavior\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n      For instance, if the agent supports a superset of the features\n      reported by the reacting node then the agent
  might choose, based\n      on local policy, to advertise that superset of features to the\n      reporting node.\n\n      If the agent modifies the OC-Supported-Features header sent to the\n      reporting node then it might also need to modify the OC-Supported-\n      Features AVP sent to a reacting node in the subsequent answer\n      message, as it cannot send an indication of support for features\n      that are not supported by the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain an overload control state\n   (OCS) for active overload reports.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node maintains the following OCS per supported Diameter\n   application:\n\n   o  A host-type Overload Control State for ea
 ch Destination-Host\n      towards which it sends host-type requests and\n\n   o  A realm-type Overload Control State for each Destination-Realm\n      towards which it sends realm-type requests.\n\n   A host-type Overload Control State may be identified by the pair of\n   Application-Id and Destination-Host.  A realm-type Overload Control\n   State may be identified by the pair of Application-Id and\n   Destination-Realm.  The host-type/realm-type Overload Control State\n   for a given pair of Application and Destination-Host / Destination-\n   Realm could include the following information:\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (deviated from validity duration as received in OC-\n      OLR and time of reception)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-\n      Features)\n\n   o  Algorithm specific input data (as received within OC-OLR, e.g.\n      Reduction Percentage for Loss)\n\n4.2.1.2.  Overload Control States for Rep
 orting Nodes\n\n   A reporting node maintains per supported Diameter application and per\n   supported (and eventually selected) Abatement Algorithm an Overload\n   Control State.\n\n   An Overload Control State may be identified by the pair of\n   Application-Id and supported Abatement Algorithm.\n\n   The Overload Control State for a given pair of Application and\n   Abatement Algorithm could include the information:\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration and Expiry Time\n\n   o  Algorithm specific input data (e.g.  Reduction Percentage for\n      Loss)\n\n4.2.1.3.  Maintaining Overload Control State\n\n   Reacting nodes create a host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a hos
 t-type OC-OLR AVP unless\n   such host-type OCS already exists.\n\n   Reacting nodes create a realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-id\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP\n   unless such realm type OCS already exists.\n\n   Reacting nodes delete an OCS when it expires (i.e. when current time\n   minus reception time is greater than validity duration).\n\n   Reacting nodes also delete on OCS with an updated OLR is received\n   with a validity duration of zero.\n\n   Reacting nodes update the host-type OCS identified by OCS-Id = (app-\n   id,host-id) when receiving an answer message of application app-id\n   containing an Orig-Host of host-id and a host-type OC-OLR AVP with a\n   sequence number higher than the stored sequence number.\n\n   Reacting nodes update the realm-type OCS identified by OCS-Id = (app-\n   id,realm-id) when receiving an answer message of application app-i
 d\n   containing an Orig-Realm of realm-id and a realm-type OC-OLR AVP with\n   a sequence number higher than the stored sequence number.\n\n   Reacting nodes do not delete an OCS when receiving an answer message\n   that does not contain an OC-OLR AVP (i.e. absence of OLR means "no\n   change").\n\n   Reporting nodes create an OCS identified by OCS-Id = (app-id,Alg)\n   when receiving a request of application app-id containing an OC-\n   Supported-Features AVP indicating support of the Abatement Algorithm\n   Alg (which the reporting node selects) while being overloaded, unless\n   such OCS already exists.\n\n   Reporting nodes delete an OCS when it expires.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Reporting nodes update the OCS identified by OCS-Id = (app-id,Alg)\n   when they detect the need to modify the requested amount of\n   application app-id traffic re
 duction.\n\n4.2.2.  Reacting Node Behavior\n\n   Once a reacting node receives an OC-OLR AVP from a reporting node, it\n   applies traffic abatement based on the selected algorithm with the\n   reporting node and the current overload condition.  The reacting node\n   learns the reporting node supported abatement algorithms directly\n   from the received answer message containing the OC-Supported-Features\n   AVP.\n\n   The received OC-Supported-Features AVP does not change the existing\n   overload condition and/or traffic abatement algorithm settings if the\n   OC-Sequence-Number AVP contains a value that is equal to the\n   previously received/recorded value.  If the OC-Supported-Features AVP\n   is received for the first time for the reporting node or the OC-\n   Sequence-Number AVP value is less than the previously received/\n   recorded value (and is outside the valid overflow window), then the\n   sequence number is stale (e.g. an intentional or unintentional\n   replay) and S
 HOULD be silently discarded.\n\n   As described in Section 6.3, the OC-OLR AVP contains the necessary\n   information for the overload condition on the reporting node.\n\n   From the OC-Report-Type AVP contained in the OC-OLR AVP, the reacting\n   node learns whether the overload condition report concerns a specific\n   host (as identified by the Origin-Host AVP of the answer message\n   containing the OC-OLR AVP) or the entire realm (as identified by the\n   Origin-Realm AVP of the answer message containing the OC-OLR AVP).\n   The reacting node learns the Diameter application to which the\n   overload report applies from the Application-ID of the answer message\n   containing the OC-OLR AVP.  The reacting node MUST use this\n   information as an input for its traffic abatement algorithm.  The\n   idea is that the reacting node applies different handling of the\n   traffic abatement, whether sent request messages are targeted to a\n   specific host (identified by the Diameter-Host 
 AVP in the request) or\n   to any host in a realm (when only the Destination-Realm AVP is\n   present in the request).  Note that future specifications MAY define\n   new OC-Report-Type AVP values that imply different handling of the\n   OC-OLR AVP.  For example, in a form of new additional AVPs inside the\n   Grouped OC-OLR AVP that would define report target in a finer\n   granularity than just a host.\n\n   If the OC-OLR AVP is received for the first time, the reacting node\n   MUST create overload control state associated with the related realm\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   or a specific host in the realm identified in the message carrying\n   the OC-OLR AVP, as described in Section 4.2.1.\n\n   If the value of the OC-Sequence-Number AVP contained in the received\n   OC-OLR AVP is equal to or less than the value stored in an existing\n   overlo
 ad control state, the received OC-OLR AVP SHOULD be silently\n   discarded.  If the value of the OC-Sequence-Number AVP contained in\n   the received OC-OLR AVP is greater than the value stored in an\n   existing overload control state or there is no previously recorded\n   sequence number, the reacting node MUST update the overload control\n   state associated with the realm or the specific node in the realm.\n\n   When an overload control state is created or updated, the reacting\n   node MUST apply the traffic abatement requested in the OC-OLR AVP\n   using the algorithm announced in the OC-Supported-Features AVP\n   contained in the received answer message along with the OC-OLR AVP.\n\n   The validity duration of the overload information contained in the\n   OC-OLR AVP is either explicitly indicated in the OC-Validity-Duration\n   AVP or is implicitly equals to the default value if the OC-Validity-\n   Duration AVP is absent.  The reacting node MUST maintain the validity\n   dur
 ation in the overload control state.  Once the validity duration\n   times out, the reacting node MUST assume the overload condition\n   reported in a previous OC-OLR AVP has ended.\n\n   A value of zero ("0") received in the OC-Validity-Duration in an\n   updated overload report indicates that the overload condition has\n   ended and that the overload state is no longer valid.\n\n   In the case that the validity duration expires or is explicitly\n   signaled as being no longer valid the state associated with the\n   overload report MUST be removed and any abatement associated with the\n   overload report MUST be ended in a controlled fashion.  After\n   removing the overload state the sequence number MUST NOT be used for\n   future comparisons of sequence numbers.\n\n4.2.3.  Reporting Node Behavior\n\n   A reporting node is a Diameter node inserting an OC-OLR AVP in a\n   Diameter message in order to inform a reacting node about an overload\n   condition and request Diameter traffi
 c abatement.\n\n   The operation on the reporting node is straight forward.  The\n   reporting node learns the capabilities of the reacting node when it\n   receives the OC-Supported-Features AVP as part of any Diameter\n   request message.  Since the loss abatement algorithm Section 5 is\n   mandatory to implement DOIC can always be enabled between these DOIC\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   nodes See Section 4.1 for further discussion on the capability and\n   feature announcement.\n\n   When a traffic reduction is required due to an overload condition and\n   the overload control solution is supported by the sender of the\n   Diameter request, the reporting node SHOULD include an OC-Supported-\n   Features AVP and an OC-OLR AVP in the corresponding Diameter answer.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting
  node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or multiple agents\n      in the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   The OC-OLR AVP contains the required traffic reduction and the OC-\n   Supported-Features AVP indicates the traffic abatement algorithm to\n   apply.  This algorithm MUST be one of the algorithms advertised by\n   the request sender.\n\n   A reporting node MUST NOT send overload reports of a type that has\n   not been advertized as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      in
 dicated by a new feature bit in the OC-Feature-Vector AVP.\n\n   If OLR is for a new overload condition and there is no unexpired\n   overload report for previous overload conditions at any reacting node\n   then the reporting node MAY set the sequence number to any value.\n\n   The reporting node MAY update the overload report with new reduction\n   percentages.\n\n   The reporting node MAY extend the validatity duration for an existing\n   overload report by sending a OLR with either the same or a new\n   validity duration value.\n\n   When sending an overload report with new values in any of the sub\n   AVPs for an existing overload condition, the reporting node MUST\n   increase the sequence number in the new OLR sent.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 18]\n_\nInternet-Draft                
     DOIC                      October 2014\n\n\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to which the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n
    be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   This document assumes that there is a single source for realm-reports\n   for a
  given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extensi
 on a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention MAY define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   SHOULD be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handl
 ing.  The specification MUST also reserve a\n   corresponding new feature in the OC-Feature-Vector AVP.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy DOIC implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value.  If\n   the new sub-AVPs imply new semantics for handling the indicated\n   report type, then a new OC-Report-Type AVP value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 201
 4\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conce
 ptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken for each request\n       is to select a random number between 1 and 100.  If the random\n       number is less than the indicated reduction percentage then the\n       request is given abatement treatment, otherwise the request is\n       given normal routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction
  required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node MUST indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node MAY change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node SHOULD send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  R
 eacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node MUST apply abatement treatment to the requested\n   percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   When applying overload abatement treatment for the load abatement\n   algorithm, the reacting node MUST abate, either by throttling or\n   diversion, the requested percentage of requests that would have\n   otherwise been sent to the reporting host or realm.\n\n   If reacting
  node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive an OLR in messages sent to the\n   formally overloaded node then the reacting node SHOULD slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   
 given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules 
 for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the n
 ode\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contai
 n all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all
  MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating seq
 uence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specifi
 c concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6
 .6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of t
 he Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need 
 to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all
  traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Feat
 ures  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +----------------------------------
 ----------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node MUST select an appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO
 _BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n   
    A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignmen
 ts.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties
  to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n 
   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\
 n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding th
 e report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to
  impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might re
 ject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diamete
 r overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive ove
 rload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric Mc
 Murry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base P
 rotocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n 
   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of 
 agent overload.\n\nA.3.  Requirements Conformance Analysis\n\n   This section contains the result of an analysis of the DOIC solutions\n   conformance to the requirements defined in [RFC7068].\n\n   To be completed.\n\nA.4.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      netw
 orks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC
 .1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applicatio
 ns:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based a
 pplication.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requ
 ests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject c
 ould take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for
  a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [
 RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      Octobe
 r 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n  
  unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlat
 ed session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of re
 quests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Ste
 ve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 40]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. D
 onovan, Ed.\nExpires: April 25, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 22, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP
  78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 25, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC    
                   October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility 
  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  17\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . 
 . .  21\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  27\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  28\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . .
  . . . . . . . . . . . . . . . . . . . . .  29\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  29\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  29\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  31\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  32\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  33\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  33\n   Appendix A.  Issues left for future specifica
 tions  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  34\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  34\n     A.3.  Requirements Conformance Analysis . . . . . . . . . . . .  34\n     A.4.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  34\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  34\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  35\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  35\n     C.2.  Application Type Overload Implications  . . . . . . . . .  36\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  37\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overl
 oad\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.  See Appendix A for a list of\n   extensions that are currently being considered.  See Appendix A.3 for\n   an analysis of the conformance to the requirements specified in\n   [RFC7068].\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   D
 iameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n 
   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 4
 ]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a Diameter Client or Diameter\n      Server dropping requests, or a Diameter Agent rejecting requests\n      with appropriate error responses.  In extreme cases reporting\n      nodes can also throttle requests when the requested reductions in\n      traffic does not sufficiently address the overload scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) solution allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reportin
 g Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter Servers\n   can send requests towards Diameter Clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or pro
 xy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for 
 each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm (Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other 
 hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   ser
 ved by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as thos
 e agents pass\n   unknown AVPs through unchanged.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application messages.\n   This is made possible by adding overload control top-level AVPs, the\n   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into\n   existing commands when the corresponding Command Code Format (CCF)\n   specification allows adding new optional AVPs (see Section 1.3.4 of\n   [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all request messages originated or relayed\n   by the Diameter node.\n\n
    Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the Diameter\n   Client MAY report its overload condition to the Diameter Server for\n   any Diameter Server initiated message exchange.  An example of such\n   is the Diameter Server requesting a re-authentication from a Diameter\
 n   Client.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solution supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is referred to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm 
 between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for on
 e\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics assoc
 iated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken not to introduce\n      interoperability issues for downstream or upstream DOIC nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, a sequen
 ce number, the length of time\n   that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to requests that do not have a Destination-\n   Host AVP when the selected route for the request is a connection to\n   the impacted host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being ge
 nerated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the Diameter application.  A realm report\n   will generally impact the traffic sent to multiple hosts and, as\n   such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   inform
 ation about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overload condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overloa
 d report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solution is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required.\n\n   Overload abatement algorithms use
  the OC-OLR AVP to communicate\n   overload occurrances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If necessary, new extensions can also define new top-level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.  
    : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\
 n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC featur
 es\n   it supports.\n\n      Not all DOIC features will necessarily apply to all transactions.\n      For instance, there may be a future extension that only applies to\n      session based applications.  A reacting node that supports this\n      extension can choose to not include it for non session based\n      applications.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Su
 pported-Features AVP.\n\n   If the request message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   according
 ly for the subsequent answer messages it initiates.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included MUST indicate the abatement algorithm\n   the reporting node wants the reacting node to use when the reporting\n   node enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AV
 P are based on local reporting node\n      policy.\n\n4.1.3.  Agent Behavior\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n      For instance, if the agent supports a superset of the features\n      reported by the reacting node then the agent might choose, based\n      on local policy, to advertise that superset of features to the\n      reporting node.\n\n      If the agent modifies the OC-Supported-Features header sent to the\n      reporting node then it might also need to modify the OC-Supported-\n      Features AVP sent to a reactin
 g node in the subsequent answer\n      message, as it cannot send an indication of support for features\n      that are not supported by the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain Overload Control State\n   (OCS) for active overload conditions.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node SHOULD maintain the following OCS per supported\n   Diameter application:\n\n   o  A host-type OCS entry for each Destination-Host to which it sends\n      host-type requests and\n\n   o  A realm-type OCS entry for each Destination-Realm to which it\n      sends realm-type requests.\n\n   A host-type OCS entry MAY be identified by the pair of Application-Id\n   and Host-Id.\n\n   A realm-type OCS entry MAY be identi
 fied by the pair of Application-\n   Id and Realm-Id.\n\n   The host-type and realm-type OCS entries MAY include the following\n   information (the actual information stored is an implementation\n   decision):\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (derived from validity duration as received in the\n      OC-OLR AVP and time of reception of the message carrying OC-OLR\n      AVP)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-Features\n      AVP)\n\n   o  Abatement Algorithm specific input data (as received within the\n      OC-OLR AVP, for example, Reduction Percentage for the Loss\n      abatement algorithm)\n\n4.2.1.2.  Overload Control State for Reporting Nodes\n\n   A reporting node SHOULD maintain OCS entries per supported Diameter\n   application and per supported (and eventually selected) Abatement\n   Algorithm.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 14]\n_\nInternet-Draft        
             DOIC                      October 2014\n\n\n   An OCS entry MAY be identified by the pair of Application-Id and\n   Abatement Algorithm.\n\n   The OCS entry for a given pair of Application and Abatement Algorithm\n   MAY include the information (the actual information stored is an\n   implementation decision):\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration\n\n   o  Expiration Time\n\n   o  Algorithm specific input data (for example, the Reduction\n      Percentage for the Loss Abatement Algorithm)\n\n4.2.1.3.  Reacting Node Maintainence of Overload Control State\n\n   When a reacting node receives an OC-OLR AVP, it MUST determine if it\n   is for an existing or new overload condition.\n\n      For the remainder of this section the term OLR referres to the\n      combination of the contents of the received OC-OLR AVP and the\n      abatement algorithm indicated in the received OC-Supported-\n      Features AVP.\n\n   The OLR is for an existing ov
 erload condition if the reacting node\n   has an OCS that matches the received OLR.\n\n   For a host report-type this means it matches the app-id and host-id\n   in an existing host OCS entry.\n\n   For a realm report-type this means it matches the app-id and realm-id\n   in an existing realm OCS entry.\n\n   If the OLR is for an existing overload condition then it MUST\n   determine if the OLR is a retransmission or an update to the existing\n   OLR.\n\n   If the sequence number for the received OLR is greater than the\n   sequence number stored in the matching OCS entry then the reacting\n   node MUST update the matching OCS entry.\n\n   If the sequence number for the received OLR is less than or equal to\n   the sequence number in the matching OCS entry then the reacting node\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   MUST silently ignore the received OLR.  
 The matching OCS MUST NOT be\n   updated in this case.\n\n   If the received OLR is for a new overload condition then the reacting\n   node MUST generate a new OCS entry for the overload condition.\n\n   For a host report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and host-id of\n   the Origin-Host in the received message.\n\n   For a realm report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and realm-id of\n   the Origin-Realm in the received message.\n\n   If the received OLR contains a validity duration of zero ("0") then\n   the reacting node MUST update the OCS entry as being expired.\n\n      Note that it is not necessarily appropriate to delete the OCS\n      entry, as there is recommended behavior that the reacting node\n      slowly returns to full traffic when ending an overload abatement\n      period.\n\n   The reacting node does not delete an OCS w
 hen receiving an answer\n   message that does not contain an OC-OLR AVP (i.e. absence of OLR\n   means "no change").\n\n4.2.1.4.  Reporting Node Maintainence of Overload Control State\n\n   A reporting node SHOULD create a new OCS entry when entering an\n   overload condition.\n\n      If the reporting node knows through absence of the OC-Supported-\n      Features AVP in received messages that there are no reacting nodes\n      supporting DOIC then the reporting node can choose to not create\n      OCS entries.\n\n   When generating a new OCS entry the sequence nubmer MAY be set to any\n   value if there is no unexpired overload report for previous overload\n   conditions at any reacting node.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   T
 he reporting node MUST update an OCS entry when it needs to adjust\n   the validity duration of the overload contition at reacting nodes.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For instance, if the reporting node wishes to instruct reacting\n      nodes to continue overload abatement for a longer period of time\n      that originally communicated.  This also applies if the reporting\n      node wishes to shorten the period of time that overload abatement\n      is to continue.\n\n   A reporting node MUST NOT update the abatement algorithm in an active\n   OCS entry.\n\n   A reporting node MUST update an OCS entry when it wishes to adjust\n   the any abatement algorithm specific parameters, including the\n   reduction percentage used for the Loss abatement algorithm.\n\n      For instance, if the reporting node wishes to change the reduction\n      percen
 tage either higher, if the overload condition has worsened,\n      or lower, if the overload condition has improved, then the\n      reporting node would update the appropriate OCS entry.\n\n   The reporting node MUST update the sequence number associated with\n   the OCS entry anytime the contents of the OCS entry are changed.\n   This will result in a new sequence number being sent to reacting\n   nodes, instructing the reacting nodes to process the OC-OLR AVP.\n\n   A reporting node SHOULD update an OCS entry with a validity duration\n   of zero ("0") when the overload condition ends.\n\n      If the reporting node knows that the OCS entries in the reacting\n      nodes are near expiration then the reporting node can decide\n      delete the OCS entry.\n\n   The reporting node MUST keep an OCS entry with a validity duration of\n   zero ("0") for a period of time long enough to ensure that any\n   reacting node OCS entry created as a result of the overload condition\n   in the rep
 orting node exists.\n\n      This period of time can be determined by calculating the time the\n      last overload report for the overload condition was sent plus the\n      validity duration included in that overload report.\n\n4.2.2.  Reacting Node Behavior\n\n   When a reacting node sends a request it MUST determine if that\n   request matches an active OCS.\n\n   If the request matches and active OCS then the reacting number MUST\n   apply abatement treatment on the request.  The abatement treatment\n   applied depends on the the abatement algorithm stored in the OCS.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   For the Loss abatement algorithm defined in this specification, see\n   Section 5 for the abatement logic applied.\n\n   If the abatement treatment results in throttling of the request and\n   if the reacting node is an agent then the agent MUST send
  an\n   appropriate error as defined in section Section 7.\n\n   In the case that the OCS entry validity duration expires or has a\n   validity duration of zero ("0"), meaning that it the reporting node\n   has explicitly signaled the end of the overload condition then\n   abatement associated with the overload abatement MUST be ended in a\n   controlled fashion.\n\n4.2.3.  Reporting Node Behavior\n\n   The operation on the reporting node is straight forward.\n\n   If there is an active OCS entry then the reporting node SHOULD\n   include the OC-OLR AVP in all answer messages to requests that\n   contain the OC-Supported-Features AVP and that match the active OCS\n   entry.\n\n      A request matches if the application-id in the request matches the\n      application-id in any active OCS entry and if the report-type in\n      the OCS entry matches a report-type supported by the reporting\n      node as indicated in the OC-Supported-Features AVP.\n\n   The contents of the OC-OLR AVP 
 MUST contain all information necessary\n   for the abatement algorithm indicated in the OC-Supported-Features\n   message that is also included in the answer message.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or more agents in\n      the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   A reporting node MUST NOT send overload reports of a type that has\n   not been advertized as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n 
      indicated by new feature bits in the OC-Feature-Vector AVP.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure tha
 t all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to which the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n   be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n   This document assumes that there is a 
 single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n      Editor\'s Note: There is not yet consensus on the above two\n      paragraphs.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extende
 d, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention MAY define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   SHOULD be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, t
 he corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature in the OC-Feature-Vector AVP.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy DOIC implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value.  If\n   the new sub-AVPs imply new semantics for handling the indicated\n   report type, then a new OC-Report-Type AVP value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\n\n\nKorhonen, et al.   
       Expires April 25, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages 
 sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken for each request\n       is to select a random number between 1 and 100.  If the random\n       number is less than the indicated reduction percentage then the\n       request is given abatement treatment, otherwise the request is\n       given normal routing tre
 atment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node MUST indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node MAY change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node SH
 OULD send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node MUST apply abatement treatment to the requested\n   percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   When applying overload abatement treatment for the load abatement\n   algorithm, the reacting node MUST abate, either by throttling or\n   diversio
 n, the requested percentage of requests that would have\n   otherwise been sent to the reporting host or realm.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive an OLR in messages sent to the\n   formally overloaded node then the reacting node SHOULD slowly\n   increase 
 the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making 
 it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supporte
 d by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type o
 f Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found in the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validi
 ty-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner
 , i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity
 -Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Ex
 pires April 25, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request match
 es the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs
  to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percent
 age AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code 
  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +---------------------------------------------
 -----+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node MUST select an appropriate error response code.  This\n   de
 termination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n
       the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Para
 meters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This informatio
 n is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 29]\n_\nInternet-Draft       
              DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies,
  downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload r
 eport received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks
 .  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportio
 nate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network op
 erators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n  
  might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contr
 ibutors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specifi
 cation", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n
    [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on D
 iameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  Requirements Conformance Analysis\n\n   This section contains the result of an analysis of the DOIC solutions\n   conformance to the requirements defined in [RFC7068].\n\n   To be completed.\n\nA.4.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment 
 Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis
  section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter r
 equest.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 35]\n_\nInternet-Draft                    DOIC             
          October 2014\n\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could inc
 lude routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an 
 implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with se
 tting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A s
 ession-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n\n\n\nKorhonen, et a
 l.         Expires April 25, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter ove
 rload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the cont
 rary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence
 .\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overloaded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhon
 en (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 40]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------050001050707070804040105--


From nobody Wed Oct 22 09:36:06 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1A14A1ACD26 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 08:09:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.59
X-Spam-Level: *
X-Spam-Status: No, score=1.59 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779, T_HTML_ATTACH=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sRF5JVXP0ky5 for <dime@ietfa.amsl.com>; Wed, 22 Oct 2014 08:08:56 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AD1B81ACD12 for <dime@ietf.org>; Wed, 22 Oct 2014 08:08:12 -0700 (PDT)
Received: from 187.31.0.109.rev.sfr.net ([109.0.31.187]:55392 helo=b8e856229362.netpoint.com) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XgxWE-0003yr-0n for dime@ietf.org; Wed, 22 Oct 2014 08:08:11 -0700
Message-ID: <5447C858.806@usdonovans.com>
Date: Wed, 22 Oct 2014 17:08:08 +0200
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/mixed; boundary="------------080705080607070801010908"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/4YdGKWbXEqiLfMZ_a2sI2xmLKRs
X-Mailman-Approved-At: Wed, 22 Oct 2014 09:36:01 -0700
Subject: [Dime] Update based on comments received from Benoit, Jouni and Maria Cruz
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Oct 2014 15:09:08 -0000

This is a multi-part message in MIME format.
--------------080705080607070801010908
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

One final update for today.

I have updated github with changes based on primarily editorial comments 
from Benoit, Jouni and Maria Cruz.  Many of the suggestions had already 
been addressed or were made irrelevant by previous changes.

I have attached the diff file to this message.

Regards,

Steve

--------------080705080607070801010908
Content-Type: text/html; charset=ISO-8859-1;
 name="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="Diff_ draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.";
 filename*1="txt.html"


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- Generated by rfcdiff 1.41: rfcdiff tmp/1/draft-ietf-dime-ovli-04.txt tmp/2/draft-ietf-dime-ovli-04.txt --> 
<!-- System: Linux gamay 2.6.39-2-686-pae #1 SMP Tue Jul 5 03:48:49 UTC 2011 i686 GNU/Linux --> 
<!-- Using awk: /usr/bin/gawk: GNU Awk 4.0.1 --> 
<!-- Using diff: /usr/bin/diff: diff (GNU diffutils) 3.3 --> 
<!-- Using wdiff: /usr/bin/wdiff: wdiff (GNU wdiff) 1.2.1 --> 
<html> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
  <meta http-equiv="Content-Style-Type" content="text/css" /> 
  <title>Diff: draft-ietf-dime-ovli-04.txt - draft-ietf-dime-ovli-04.txt</title> 
  <style type="text/css"> 
    body    { margin: 0.4ex; margin-right: auto; } 
    tr      { } 
    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
    th      { font-size: 0.86em; } 
    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
    .left   { background-color: #EEE; } 
    .right  { background-color: #FFF; } 
    .diff   { background-color: #CCF; } 
    .lblock { background-color: #BFB; } 
    .rblock { background-color: #FF8; } 
    .insert { background-color: #8FF; } 
    .delete { background-color: #ACF; } 
    .void   { background-color: #FFB; } 
    .cont   { background-color: #EEE; } 
    .linebr { background-color: #AAA; } 
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
    .elipsis{ background-color: #AAA; } 
    .left .cont { background-color: #DDD; } 
    .right .cont { background-color: #EEE; } 
    .lblock .cont { background-color: #9D9; } 
    .rblock .cont { background-color: #DD6; } 
    .insert .cont { background-color: #0DD; } 
    .delete .cont { background-color: #8AD; } 
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
  </style> 
</head> 
<body > 
  <table border="0" cellpadding="0" cellspacing="0"> 
  <tr bgcolor="orange"><th></th><th><a href="/rfcdiff?url2=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&lt;</a>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;</th><th> </th><th>&nbsp;<a href="/html/draft-ietf-dime-ovli-04.txt" style="color:#008">draft-ietf-dime-ovli-04.txt</a>&nbsp;<a href="/rfcdiff?url1=draft-ietf-dime-ovli-04.txt" style="color:#008; text-decoration:none;">&gt;</a></th><th></th></tr> 
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l1" /><small>skipping to change at</small><em> page 2, line 22</em></th><th> </th><th><a name="part-r1" /><small>skipping to change at</small><em> page 2, line 22</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td> </td><td class="right">   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5</td><td> </td><td class="right">   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7</td><td> </td><td class="right">     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8</td><td> </td><td class="right">     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9</td><td> </td><td class="right">     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td> </td><td class="right">     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11</td><td> </td><td class="right">     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0001" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  1<span class="delete">2</span></td><td> </td><td class="rblock">   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  1<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td> </td><td class="right">       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td> </td><td class="right">       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14</td><td> </td><td class="right">     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14</td><td> </td><td class="right">       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0002" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="delete">8</span></td><td> </td><td class="rblock">       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  1<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  18</td><td> </td><td class="right">       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  18</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20</td><td> </td><td class="right">     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0003" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="delete">1</span></td><td> </td><td class="rblock">   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  2<span class="insert">0</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21</td><td> </td><td class="right">     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0004" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="delete">2</span></td><td> </td><td class="rblock">     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  2<span class="insert">1</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22</td><td> </td><td class="right">     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23</td><td> </td><td class="right">     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td> </td><td class="right">     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25</td><td> </td><td class="right">     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26</td><td> </td><td class="right">     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27</td><td> </td><td class="right">     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 3, line 27</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 3, line 27</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                Solution . . . . . . . . . . . . . . . . . . . . . .  35</td><td> </td><td class="right">                Solution . . . . . . . . . . . . . . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.1.  Application Classification  . . . . . . . . . . . . . . .  35</td><td> </td><td class="right">     C.1.  Application Classification  . . . . . . . . . . . . . . .  35</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.2.  Application Type Overload Implications  . . . . . . . . .  36</td><td> </td><td class="right">     C.2.  Application Type Overload Implications  . . . . . . . . .  36</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Request Transaction Classification  . . . . . . . . . . .  37</td><td> </td><td class="right">     C.3.  Request Transaction Classification  . . . . . . . . . . .  37</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38</td><td> </td><td class="right">     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39</td><td> </td><td class="right">   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines a base solution for Diameter Overload</td><td> </td><td class="right">   This specification defines a base solution for Diameter Overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0005" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Control (DOC), refer<span class="delete">r</span>ed to as Diameter Overload Indication Conveyance</td><td> </td><td class="rblock">   Control (DOC), refered to as Diameter Overload Indication Conveyance</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (DOIC).  The requirements for the solution are described and</td><td> </td><td class="right">   (DOIC).  The requirements for the solution are described and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   discussed in the corresponding design requirements document</td><td> </td><td class="right">   discussed in the corresponding design requirements document</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  Note that the overload control solution defined in this</td><td> </td><td class="right">   [RFC7068].  Note that the overload control solution defined in this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification does not address all the requirements listed in</td><td> </td><td class="right">   specification does not address all the requirements listed in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].  A number of overload control related features are left</td><td> </td><td class="right">   [RFC7068].  A number of overload control related features are left</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   for the future specifications.  See Appendix A for a list of</td><td> </td><td class="right">   for the future specifications.  See Appendix A for a list of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   extensions that are currently being considered.  See Appendix A.3 for</td><td> </td><td class="right">   extensions that are currently being considered.  See Appendix A.3 for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   an analysis of the conformance to the requirements specified in</td><td> </td><td class="right">   an analysis of the conformance to the requirements specified in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC7068].</td><td> </td><td class="right">   [RFC7068].</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The solution defined in this specification addresses Diameter</td><td> </td><td class="right">   The solution defined in this specification addresses Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload control between Diameter nodes that support the DOIC</td><td> </td><td class="right">   overload control between Diameter nodes that support the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0006" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   solution.  Furthermore, the solution <span class="delete">which</span> is designed to apply to</td><td> </td><td class="rblock">   solution.  Furthermore, the solution is designed to apply to existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   existing and future Diameter applications, requires no changes to the</td><td> </td><td class="rblock">   and future Diameter applications, requires no changes to the Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Diameter base protocol [RFC6733] and is deployable in environments</td><td> </td><td class="rblock">   base protocol [RFC6733] and is deployable in environments where some</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   where some Diameter nodes do not implement the Diameter overload</td><td> </td><td class="rblock">   Diameter nodes do not implement the Diameter overload control</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   control solution defined in this specification.</td><td> </td><td class="rblock">   solution defined in this specification.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">2.  Terminology and Abbreviations</td><td> </td><td class="right">2.  Terminology and Abbreviations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Abatement</td><td> </td><td class="right">   Abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Reaction to receipt of an overload report resulting in a reduction</td><td> </td><td class="right">      Reaction to receipt of an overload report resulting in a reduction</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      in traffic sent to the reporting node.  Abatement actions include</td><td> </td><td class="right">      in traffic sent to the reporting node.  Abatement actions include</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      diversion and throttling.</td><td> </td><td class="right">      diversion and throttling.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Abatement Algorithm</td><td> </td><td class="right">   Abatement Algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0007" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      An <span class="delete">mechanis</span>m requested by reporting nodes and used by reacting</td><td> </td><td class="rblock">      An <span class="insert">algorith</span>m requested by reporting nodes and used by reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      nodes to reduce the amount of traffic sent during an occurrence of</td><td> </td><td class="right">      nodes to reduce the amount of traffic sent during an occurrence of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      overload control.</td><td> </td><td class="right">      overload control.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diversion</td><td> </td><td class="right">   Diversion</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Abatement of traffic sent to a reporting node by a reacting node</td><td> </td><td class="right">      Abatement of traffic sent to a reporting node by a reacting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      in response to receipt of an overload report.  The abatement is</td><td> </td><td class="right">      in response to receipt of an overload report.  The abatement is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      achieved by diverting traffic from the reporting node to another</td><td> </td><td class="right">      achieved by diverting traffic from the reporting node to another</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Diameter node that is able to process the request.</td><td> </td><td class="right">      Diameter node that is able to process the request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Host-Routed Request</td><td> </td><td class="right">   Host-Routed Request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The set of requests that a reacting node knows will be served by a</td><td> </td><td class="right">      The set of requests that a reacting node knows will be served by a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      particular host, either due to the presence of a Destination-Host</td><td> </td><td class="right">      particular host, either due to the presence of a Destination-Host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      AVP, or by some other local knowledge on the part of the reacting</td><td> </td><td class="right">      AVP, or by some other local knowledge on the part of the reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      node.</td><td> </td><td class="right">      node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Control State (OCS)</td><td> </td><td class="right">   Overload Control State (OCS)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0008" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Reporting and reacting node internally maintained state</span> describing</td><td> </td><td class="rblock">      <span class="insert">State</span> describing <span class="insert">an occurrence</span> of overload <span class="insert">control maintained by</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">occurrences</span> of overload <span class="delete">control.</span></td><td> </td><td class="rblock"><span class="insert">      reporting and reacting nodes.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload Report (OLR)</td><td> </td><td class="right">   Overload Report (OLR)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0009" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Information</span> sent by a reporting node indicating the start or</td><td> </td><td class="rblock">      <span class="insert">A set of AVPs</span> sent by a reporting node indicating the start or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      continuation of an occurrence of overload control.</td><td> </td><td class="right">      continuation of an occurrence of overload control.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting Node</td><td> </td><td class="right">   Reacting Node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0010" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      A Diameter node that <span class="delete">acts upon an overload</span> report.</td><td> </td><td class="rblock">      A Diameter node that <span class="insert">consumes and acts upon a</span> report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Realm-Routed Request</td><td> </td><td class="right">   Realm-Routed Request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The set of requests that a reacting node does not know the host</td><td> </td><td class="right">      The set of requests that a reacting node does not know the host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      that will service the request.</td><td> </td><td class="right">      that will service the request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting Node</td><td> </td><td class="right">   Reporting Node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      A Diameter node that generates an overload report.  (This may or</td><td> </td><td class="right">      A Diameter node that generates an overload report.  (This may or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      may not be the overloaded node.)</td><td> </td><td class="right">      may not be the overloaded node.)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 5, line 27</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 5, line 27</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter nodes to request other nodes to perform overload abatement</td><td> </td><td class="right">   Diameter nodes to request other nodes to perform overload abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   actions, that is, actions to reduce the load offered to the</td><td> </td><td class="right">   actions, that is, actions to reduce the load offered to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded node or realm.</td><td> </td><td class="right">   overloaded node or realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A Diameter node that supports DOIC is known as a "DOIC node".  Any</td><td> </td><td class="right">   A Diameter node that supports DOIC is known as a "DOIC node".  Any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter node can act as a DOIC node, including clients, servers, and</td><td> </td><td class="right">   Diameter node can act as a DOIC node, including clients, servers, and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   agents.  DOIC nodes are further divided into "Reporting Nodes" and</td><td> </td><td class="right">   agents.  DOIC nodes are further divided into "Reporting Nodes" and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   "Reacting Nodes."  A reporting node requests overload abatement by</td><td> </td><td class="right">   "Reacting Nodes."  A reporting node requests overload abatement by</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sending an Overload Report (OLR) to one or more reacting nodes.</td><td> </td><td class="right">   sending an Overload Report (OLR) to one or more reacting nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0011" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   A reacting node <span class="delete">acts upon</span> OLRs, and performs whatever actions are</td><td> </td><td class="rblock">   A reacting node <span class="insert">consumes</span> OLRs, and performs whatever actions are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   needed to <span class="delete">fulfil</span> the abatement requests included in the OLRs.  A</td><td> </td><td class="rblock">   needed to <span class="insert">fulfill</span> the abatement requests included in the OLRs.  A</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting node may report overload on its own behalf, or on behalf of</td><td> </td><td class="right">   Reporting node may report overload on its own behalf, or on behalf of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   other (typically upstream) nodes.  Likewise, a reacting node may</td><td> </td><td class="right">   other (typically upstream) nodes.  Likewise, a reacting node may</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   perform overload abatement on its own behalf, or on behalf of other</td><td> </td><td class="right">   perform overload abatement on its own behalf, or on behalf of other</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (typically downstream) nodes.</td><td> </td><td class="right">   (typically downstream) nodes.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A node's role as a DOIC node is independent of its Diameter role.</td><td> </td><td class="right">   A node's role as a DOIC node is independent of its Diameter role.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,</td><td> </td><td class="right">   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   even though they are not endpoints in the Diameter sense.  Since</td><td> </td><td class="right">   even though they are not endpoints in the Diameter sense.  Since</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter enables bi-directional applications, where Diameter Servers</td><td> </td><td class="right">   Diameter enables bi-directional applications, where Diameter Servers</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   can send requests towards Diameter Clients, a given Diameter node can</td><td> </td><td class="right">   can send requests towards Diameter Clients, a given Diameter node can</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 6, line 10</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 6, line 10</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   information.  Rather, they "piggyback" DOIC information over existing</td><td> </td><td class="right">   information.  Rather, they "piggyback" DOIC information over existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter messages by inserting new AVPs into existing Diameter</td><td> </td><td class="right">   Diameter messages by inserting new AVPs into existing Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requests and responses.  Nodes indicate support for DOIC, and any</td><td> </td><td class="right">   requests and responses.  Nodes indicate support for DOIC, and any</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   needed DOIC parameters by inserting an OC_Supported_Features AVP</td><td> </td><td class="right">   needed DOIC parameters by inserting an OC_Supported_Features AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (Section 6.2) into existing requests and responses.  Reporting nodes</td><td> </td><td class="right">   (Section 6.2) into existing requests and responses.  Reporting nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   send OLRs by inserting OC-OLR AVPs (Section 6.3).</td><td> </td><td class="right">   send OLRs by inserting OC-OLR AVPs (Section 6.3).</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A given OLR applies to the Diameter realm and application of the</td><td> </td><td class="right">   A given OLR applies to the Diameter realm and application of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter message that carries it.  If a reporting node supports more</td><td> </td><td class="right">   Diameter message that carries it.  If a reporting node supports more</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   than one realm and/or application, it reports independently for each</td><td> </td><td class="right">   than one realm and/or application, it reports independently for each</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0012" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   combination of realm and application.  Similarly, <span class="delete">the OC-Supported-</span></td><td> </td><td class="rblock">   combination of realm and application.  Similarly, <span class="insert">OC-Feature-Vector</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Features AVP applies</span> to the realm and application of the enclosing</td><td> </td><td class="rblock"><span class="insert">   AVPs apply</span> to the realm and application of the enclosing message.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   message.  This implies that a node may support DOIC for one</td><td> </td><td class="rblock">   This implies that a node may support DOIC for one application and/or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   application and/or realm, but not another, and may indicate different</td><td> </td><td class="rblock">   realm, but not another, and may indicate different DOIC parameters</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   DOIC parameters for each application and realm for which it supports</td><td> </td><td class="rblock">   for each application and realm for which it supports DOIC.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   DOIC.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes perform overload abatement according to an agreed-upon</td><td> </td><td class="right">   Reacting nodes perform overload abatement according to an agreed-upon</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithm.  An abatement algorithm defines the meaning of</td><td> </td><td class="right">   abatement algorithm.  An abatement algorithm defines the meaning of</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0013" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   the parameters of an OLR and the procedures required for overload</td><td> </td><td class="rblock">   the parameters of an OLR<span class="insert">,</span> and the procedures required for overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement.  This document specifies a single must-support algorithm,</td><td> </td><td class="right">   abatement.  This document specifies a single must-support algorithm,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   namely the "loss" algorithm (Section 5).  Future specifications may</td><td> </td><td class="right">   namely the "loss" algorithm (Section 5).  Future specifications may</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   introduce new algorithms.</td><td> </td><td class="right">   introduce new algorithms.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Overload conditions may vary in scope.  For example, a single</td><td> </td><td class="right">   Overload conditions may vary in scope.  For example, a single</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter node may be overloaded, in which case reacting nodes may</td><td> </td><td class="right">   Diameter node may be overloaded, in which case reacting nodes may</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0014" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   reasonably attempt to send requests to other destinations or via</td><td> </td><td class="rblock">   reasonably attempt to send <span class="insert">throttled</span> requests to other destinations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   other agents.  On the other hand, an entire Diameter realm may be</td><td> </td><td class="rblock">   or via other agents.  On the other hand, an entire Diameter realm may</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   overloaded, in which case such attempts would do harm.  DOIC OLRs</td><td> </td><td class="rblock">   be overloaded, in which case such attempts would do harm.  DOIC OLRs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   have a concept of "report type" (Section 6.6), where the type defines</td><td> </td><td class="right">   have a concept of "report type" (Section 6.6), where the type defines</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   such behaviors.  Report types are extensible.  This document defines</td><td> </td><td class="right">   such behaviors.  Report types are extensible.  This document defines</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   report types for overload of a specific server, and for overload of</td><td> </td><td class="right">   report types for overload of a specific server, and for overload of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   an entire realm.</td><td> </td><td class="right">   an entire realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A report of type host is sent to indicate the overload of a specific</td><td> </td><td class="right">   A report of type host is sent to indicate the overload of a specific</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   server for the application-id indicated in the transaction.  When</td><td> </td><td class="right">   server for the application-id indicated in the transaction.  When</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   receiving an OLR of type host, a reacting node applies overload</td><td> </td><td class="right">   receiving an OLR of type host, a reacting node applies overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement to what is referred to in this document as host-routed</td><td> </td><td class="right">   abatement to what is referred to in this document as host-routed</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requests.  This is the set of requests that the reacting node knows</td><td> </td><td class="right">   requests.  This is the set of requests that the reacting node knows</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 7, line 28</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 7, line 28</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control AVPs defined in this specification have been</td><td> </td><td class="right">   The overload control AVPs defined in this specification have been</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   designed to be piggybacked on top of existing application messages.</td><td> </td><td class="right">   designed to be piggybacked on top of existing application messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This is made possible by adding overload control top-level AVPs, the</td><td> </td><td class="right">   This is made possible by adding overload control top-level AVPs, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into</td><td> </td><td class="right">   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   existing commands when the corresponding Command Code Format (CCF)</td><td> </td><td class="right">   existing commands when the corresponding Command Code Format (CCF)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   specification allows adding new optional AVPs (see Section 1.3.4 of</td><td> </td><td class="right">   specification allows adding new optional AVPs (see Section 1.3.4 of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC6733]).</td><td> </td><td class="right">   [RFC6733]).</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes indicate support for DOIC by including the OC-</td><td> </td><td class="right">   Reacting nodes indicate support for DOIC by including the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP in all request messages originated or relayed</td><td> </td><td class="right">   Supported-Features AVP in all request messages originated or relayed</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0015" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   by the <span class="delete">reacting</span> node.</td><td> </td><td class="rblock">   by the <span class="insert">Diameter</span> node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes indicate support for DOIC by including the OC-</td><td> </td><td class="right">   Reporting nodes indicate support for DOIC by including the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP in all answer messages originated or relayed</td><td> </td><td class="right">   Supported-Features AVP in all answer messages originated or relayed</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0016" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   by the <span class="delete">reporting</span> node.  Reporting nodes also include overload reports</td><td> </td><td class="rblock">   by the <span class="insert">Diameter</span> node.  Reporting nodes also include overload reports</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   using the OC-OLR AVP in answer messages.</td><td> </td><td class="right">   using the OC-OLR AVP in answer messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note: There is no new Diameter application defined to carry</td><td> </td><td class="right">      Note: There is no new Diameter application defined to carry</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      overload related AVPs.  The DOIC AVPs are carried in existing</td><td> </td><td class="right">      overload related AVPs.  The DOIC AVPs are carried in existing</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Diameter application messages.</td><td> </td><td class="right">      Diameter application messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Note that the overload control solution does not have fixed server</td><td> </td><td class="right">   Note that the overload control solution does not have fixed server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and client roles.  The DOIC node role is determined based on the</td><td> </td><td class="right">   and client roles.  The DOIC node role is determined based on the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message type: whether the message is a request (i.e. sent by a</td><td> </td><td class="right">   message type: whether the message is a request (i.e. sent by a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   "reacting node") or an answer (i.e. send by a "reporting node").</td><td> </td><td class="right">   "reacting node") or an answer (i.e. send by a "reporting node").</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 8, line 12</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 8, line 12</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is the Diameter Server requesting a re-authentication from a Diameter</td><td> </td><td class="right">   is the Diameter Server requesting a re-authentication from a Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Client.</td><td> </td><td class="right">   Client.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">3.2.  DOIC Capability Announcement</td><td> </td><td class="right">3.2.  DOIC Capability Announcement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solution supports the ability for Diameter nodes to</td><td> </td><td class="right">   The DOIC solution supports the ability for Diameter nodes to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   determine if other nodes in the path of a request support the</td><td> </td><td class="right">   determine if other nodes in the path of a request support the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   solution.  This capability is referred to as DOIC Capability</td><td> </td><td class="right">   solution.  This capability is referred to as DOIC Capability</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Announcement (DCA) and is separate from Diameter Capability Exchange.</td><td> </td><td class="right">   Announcement (DCA) and is separate from Diameter Capability Exchange.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0017" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The DCA <span class="delete">solution</span> uses the OC-Supported-Features AVPs to indicate the</td><td> </td><td class="rblock">   The DCA <span class="insert">mechanism</span> uses the OC-Supported-Features AVPs to indicate the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter overload features supported.</td><td> </td><td class="right">   Diameter overload features supported.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The first node in the path of a Diameter request that supports the</td><td> </td><td class="right">   The first node in the path of a Diameter request that supports the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   DOIC solution inserts the OC-Supported-Feature AVP in the request</td><td> </td><td class="right">   DOIC solution inserts the OC-Supported-Feature AVP in the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message.  This includes an indication that it supports the loss</td><td> </td><td class="right">   message.  This includes an indication that it supports the loss</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload abatement algorithm defined in this specification (see</td><td> </td><td class="right">   overload abatement algorithm defined in this specification (see</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 5).  This insures that there is at least one commonly</td><td> </td><td class="right">   Section 5).  This insures that there is at least one commonly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   supported overload abatement algorithm between the reporting node and</td><td> </td><td class="right">   supported overload abatement algorithm between the reporting node and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the reacting nodes in the path of the request.</td><td> </td><td class="right">   the reacting nodes in the path of the request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      DOIC must support deployments where Diameter Clients and/or</td><td> </td><td class="right">      DOIC must support deployments where Diameter Clients and/or</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0018" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      Diameter <span class="delete">S</span>ervers do not support the DOIC solution.  In this</td><td> </td><td class="rblock">      Diameter <span class="insert">s</span>ervers do not support the DOIC solution.  In this</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      scenario, it is assumed that Diameter Agents that support the DOIC</td><td> </td><td class="right">      scenario, it is assumed that Diameter Agents that support the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      solution will handle overload abatement for the non supporting</td><td> </td><td class="right">      solution will handle overload abatement for the non supporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0019" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Diameter node</span>s.  In this case the DOIC agent will insert the OC-</td><td> </td><td class="rblock">      <span class="insert">client</span>s.  In this case the DOIC agent will insert the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Supporting-Features AVP in requests that do not already contain</td><td> </td><td class="right">      Supporting-Features AVP in requests that do not already contain</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      one, telling the reporting node that there is a DOIC node that</td><td> </td><td class="right">      one, telling the reporting node that there is a DOIC node that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      will handle overload abatement.</td><td> </td><td class="right">      will handle overload abatement.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node inserts the OC-Supported-Feature AVP in all answer</td><td> </td><td class="right">   The reporting node inserts the OC-Supported-Feature AVP in all answer</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   messages to requests that contained the OC-Supported-Feature AVP.</td><td> </td><td class="right">   messages to requests that contained the OC-Supported-Feature AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The contents of the reporting node's OC-Supported-Feature AVP</td><td> </td><td class="right">   The contents of the reporting node's OC-Supported-Feature AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicate the set of Diameter overload features supported by the</td><td> </td><td class="right">   indicate the set of Diameter overload features supported by the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reporting node with one exception.</td><td> </td><td class="right">   reporting node with one exception.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node only includes an indication of support for one</td><td> </td><td class="right">   The reporting node only includes an indication of support for one</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload abatement algorithm.  This is the algorithm that the</td><td> </td><td class="right">   overload abatement algorithm.  This is the algorithm that the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0020" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   reporting node intends to use should it enter an overload <span class="delete">condition</span></td><td> </td><td class="rblock">   reporting node intends to use should it enter an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   or requests to use while it actually is in an overload</span> condition.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reacting nodes can use the indicated overload abatement algorithm to</td><td> </td><td class="right">   Reacting nodes can use the indicated overload abatement algorithm to</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0021" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   prepare for possible overload <span class="delete">reports and must use the indicated</span></td><td> </td><td class="rblock">   prepare for possible overload <span class="insert">reports.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   overload abatement algorithm if traffic reduction is actually</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requested.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that the loss algorithm defined in this document is a</td><td> </td><td class="right">      Note that the loss algorithm defined in this document is a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      stateless abatement algorithm.  As a result it does not require</td><td> </td><td class="right">      stateless abatement algorithm.  As a result it does not require</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      any actions by reacting nodes prior to the receipt of an overload</td><td> </td><td class="right">      any actions by reacting nodes prior to the receipt of an overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      report.  Stateful abatement algorithms that base the abatement</td><td> </td><td class="right">      report.  Stateful abatement algorithms that base the abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      logic on a history of request messages sent might require reacting</td><td> </td><td class="right">      logic on a history of request messages sent might require reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      nodes to maintain state to insure that overload reports can be</td><td> </td><td class="right">      nodes to maintain state to insure that overload reports can be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      properly handled.</td><td> </td><td class="right">      properly handled.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The individual features supported by the DOIC nodes are indicated in</td><td> </td><td class="right">   The individual features supported by the DOIC nodes are indicated in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 9, line 35</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 9, line 33</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   As with DOIC Capability Announcement, Overload Condition Reporting</td><td> </td><td class="right">   As with DOIC Capability Announcement, Overload Condition Reporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   uses new AVPs (Section 6.3) to indicate an overload condition.</td><td> </td><td class="right">   uses new AVPs (Section 6.3) to indicate an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP</td><td> </td><td class="right">   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   includes the type of report, a sequence number, the length of time</td><td> </td><td class="right">   includes the type of report, a sequence number, the length of time</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that the report is valid and abatement algorithm specific AVPs.</td><td> </td><td class="right">   that the report is valid and abatement algorithm specific AVPs.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Two types of overload reports are defined in this document, host</td><td> </td><td class="right">   Two types of overload reports are defined in this document, host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reports and realm reports.</td><td> </td><td class="right">   reports and realm reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0022" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A report of type host</span> is sent to <span class="delete">indicate the overload of</span> a specific</td><td> </td><td class="rblock">   <span class="insert">Host reports apply to traffic that</span> is sent to a specific Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Diameter <span class="delete">node for the application-id indicated in the transaction.</span></td><td> </td><td class="rblock">   <span class="insert">host.  The</span> applies to requests that <span class="insert">contain</span> the Destination-Host <span class="insert">AVP</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   When receiving an OLR of type host, a reacting node</span> applies <span class="delete">overload</span></td><td> </td><td class="rblock"><span class="insert">   that contains a DiameterIdentity that matches that</span> of the overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   abatement</span> to <span class="delete">what is referred to in this document as host-routed</span></td><td> </td><td class="rblock">   <span class="insert">report.  These requests are referred to as</span> host-routed <span class="insert">requests.  A</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   requests.  This is the set of</span> requests that the <span class="delete">reacting node knows</span></td><td> </td><td class="rblock"><span class="insert">   host report also applies to</span> requests that <span class="insert">do not have a Destination-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   will be served by a particular host, either due to the presence of a</span></td><td> </td><td class="rblock"><span class="insert">   Host</span> AVP <span class="insert">when</span> the <span class="insert">selected route for</span> the <span class="insert">request is a connection to</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Destination-Host <span class="delete">AVP, or by some other local knowledge on the part</span> of</td><td> </td><td class="rblock"><span class="insert">   the impacted</span> host.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   the <span class="delete">reacting node.  The reacting node applies</span> overload <span class="delete">abatement on</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   those</span> host-routed requests <span class="delete">which the reacting node knows will be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   served by the server</span> that <span class="delete">matches the Origin-Host</span> AVP <span class="delete">of</span> the <span class="delete">received</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   message that contained</span> the <span class="delete">received OLR of type</span> host.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Realm reports apply to realm-routed requests for a specific realm as</td><td> </td><td class="right">   Realm reports apply to realm-routed requests for a specific realm as</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   indicated in the Destination-Realm AVP.</td><td> </td><td class="right">   indicated in the Destination-Realm AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes are responsible for determining the need for a</td><td> </td><td class="right">   Reporting nodes are responsible for determining the need for a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reduction of traffic.  The method for making this determination is</td><td> </td><td class="right">   reduction of traffic.  The method for making this determination is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   implementation specific and depend on the type of overload report</td><td> </td><td class="right">   implementation specific and depend on the type of overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   being generated.  A host report, for instance, will generally be</td><td> </td><td class="right">   being generated.  A host report, for instance, will generally be</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   generated by tracking utilization of resources required by the host</td><td> </td><td class="right">   generated by tracking utilization of resources required by the host</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to handle transactions for the Diameter application.  A realm report</td><td> </td><td class="right">   to handle transactions for the Diameter application.  A realm report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 10, line 35</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 10, line 28</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   in extensions to the DOIC solutions.</td><td> </td><td class="right">   in extensions to the DOIC solutions.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   As the conditions that lead to the generation of the overload report</td><td> </td><td class="right">   As the conditions that lead to the generation of the overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   change the reporting node can send new overload reports requesting</td><td> </td><td class="right">   change the reporting node can send new overload reports requesting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   greater reduction if the condition gets worse or less reduction if</td><td> </td><td class="right">   greater reduction if the condition gets worse or less reduction if</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the condition improves.  The reporting node sends an overload report</td><td> </td><td class="right">   the condition improves.  The reporting node sends an overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with a duration of zero to indicate that the overload condition has</td><td> </td><td class="right">   with a duration of zero to indicate that the overload condition has</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   ended and use of the abatement algorithm is no longer needed.</td><td> </td><td class="right">   ended and use of the abatement algorithm is no longer needed.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reacting node also determines when the overload report expires</td><td> </td><td class="right">   The reacting node also determines when the overload report expires</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0023" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   based on the OC-Valid<span class="delete">i</span>ty-Duration AVP in the overload report and</td><td> </td><td class="rblock">   based on the OC-Valid<span class="insert">a</span>ty-Duration AVP in the overload report and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   stops applying the abatement algorithm when the report expires.</td><td> </td><td class="right">   stops applying the abatement algorithm when the report expires.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">3.4.  DOIC Extensibility</td><td> </td><td class="right">3.4.  DOIC Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solution is designed to be extensible.  This extensibility</td><td> </td><td class="right">   The DOIC solution is designed to be extensible.  This extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is based on existing Diameter based extensibility mechanisms.</td><td> </td><td class="right">   is based on existing Diameter based extensibility mechanisms.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   There are multiple categories of extensions that are expected.  This</td><td> </td><td class="right">   There are multiple categories of extensions that are expected.  This</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   includes the definition of new overload abatement algorithms, the</td><td> </td><td class="right">   includes the definition of new overload abatement algorithms, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   definition of new report types and new definitions of the scope of</td><td> </td><td class="right">   definition of new report types and new definitions of the scope of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 11, line 4</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 10, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   There are multiple categories of extensions that are expected.  This</td><td> </td><td class="right">   There are multiple categories of extensions that are expected.  This</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   includes the definition of new overload abatement algorithms, the</td><td> </td><td class="right">   includes the definition of new overload abatement algorithms, the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   definition of new report types and new definitions of the scope of</td><td> </td><td class="right">   definition of new report types and new definitions of the scope of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   messages impacted by an overload report.</td><td> </td><td class="right">   messages impacted by an overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes</td><td> </td><td class="right">   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to communicate supported features.  The specific features supported</td><td> </td><td class="right">   to communicate supported features.  The specific features supported</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC</td><td> </td><td class="right">   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   extensions must define new values for the OC-Feature-Vector AVP.</td><td> </td><td class="right">   extensions must define new values for the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0024" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">                                                                         </span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   DOIC extensions also have the ability to add new AVPs to the OC-</td><td> </td><td class="right">   DOIC extensions also have the ability to add new AVPs to the OC-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Supported-Features AVP, if additional information about the new</td><td> </td><td class="right">   Supported-Features AVP, if additional information about the new</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   feature is required.</td><td> </td><td class="right">   feature is required.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0025" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Reporting nodes</span> use the OC-OLR AVP to communicate overload</td><td> </td><td class="rblock">   <span class="insert">Overload abatement algorithms</span> use the OC-OLR AVP to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   occurrances.  This AVP can also be extended to add new AVPs allowing</td><td> </td><td class="rblock">   overload occurrances.  This AVP can also be extended to add new AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   a reporting nodes to communicate additional information about</td><td> </td><td class="rblock">   allowing a reporting nodes to communicate additional information</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   handling an overload condition.</td><td> </td><td class="rblock">   about handling an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If necessary, new extensions can also define new top-level AVPs.  It</td><td> </td><td class="right">   If necessary, new extensions can also define new top-level AVPs.  It</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is, however, recommended that DOIC extensions use the OC-Supported-</td><td> </td><td class="right">   is, however, recommended that DOIC extensions use the OC-Supported-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Features and OC-OLR to carry all DOIC related AVPs.</td><td> </td><td class="right">   Features and OC-OLR to carry all DOIC related AVPs.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">3.5.  Simplified Example Architecture</td><td> </td><td class="right">3.5.  Simplified Example Architecture</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Figure 1 illustrates the simplified architecture for Diameter</td><td> </td><td class="right">   Figure 1 illustrates the simplified architecture for Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload information conveyance.</td><td> </td><td class="right">   overload information conveyance.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 13, line 18</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 13, line 7</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td> </td><td class="right">   The reporting node MUST NOT include the OC-Supported-Features AVP,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td> </td><td class="right">   OC-OLR AVP or any other overload control AVPs defined in extension</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   drafts in response messages for transactions where the request</td><td> </td><td class="right">   drafts in response messages for transactions where the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td> </td><td class="right">   message does not include the OC-Supported-Features AVP.  Lack of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Supported-Features AVP in the request message indicates that there</td><td> </td><td class="right">   OC-Supported-Features AVP in the request message indicates that there</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is no reacting node for the transaction.</td><td> </td><td class="right">   is no reacting node for the transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Based on the content of the OC-Supported-Features AVP in the request</td><td> </td><td class="right">   Based on the content of the OC-Supported-Features AVP in the request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   message, the reporting node knows what overload control functionality</td><td> </td><td class="right">   message, the reporting node knows what overload control functionality</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0026" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">is supported by the reacting node</span>.  The reporting node then acts</td><td> </td><td class="rblock">   <span class="insert">supported by reacting node(s)</span>.  The reporting node then acts</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   accordingly for the subsequent answer messages it initiates.</td><td> </td><td class="right">   accordingly for the subsequent answer messages it initiates.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node MUST indicate support for one and only one</td><td> </td><td class="right">   The reporting node MUST indicate support for one and only one</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithm in the OC-Feature-Vector AVP.  The abatement</td><td> </td><td class="right">   abatement algorithm in the OC-Feature-Vector AVP.  The abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   algorithm included MUST be from the set of abatement algorithms</td><td> </td><td class="right">   algorithm included MUST be from the set of abatement algorithms</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0027" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   contained in the request message<span class="delete">'</span>s OC-Supported-Features AVP.  The</td><td> </td><td class="rblock">   contained in the request messages OC-Supported-Features AVP.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithm included MUST indicate the abatement algorithm</td><td> </td><td class="right">   abatement algorithm included MUST indicate the abatement algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the reporting node wants the reacting node to use when the reporting</td><td> </td><td class="right">   the reporting node wants the reacting node to use when the reporting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   node enters an overload condition.</td><td> </td><td class="right">   node enters an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The reporting node MUST NOT change the selected algorithm during a</td><td> </td><td class="right">   The reporting node MUST NOT change the selected algorithm during a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   period of time that it is in an overload condition and, as a result,</td><td> </td><td class="right">   period of time that it is in an overload condition and, as a result,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is sending OC-OLR AVPs in answer messages.</td><td> </td><td class="right">   is sending OC-OLR AVPs in answer messages.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0028" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The reporting node SHOULD indicate support for other DOIC features</td><td> </td><td class="rblock">   The reporting node SHOULD indicate support for other DOIC features it</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">defined in extension drafts that</span> it supports and that apply to the</td><td> </td><td class="rblock">   supports and that apply to the transaction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   transaction.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Note that not all DOIC features will apply to all Diameter</td><td> </td><td class="right">      Note that not all DOIC features will apply to all Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      applications or deployment scenarios.  The features included in</td><td> </td><td class="right">      applications or deployment scenarios.  The features included in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      the OC-Feature-Vector AVP are based on local reporting node</td><td> </td><td class="right">      the OC-Feature-Vector AVP are based on local reporting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      policy.</td><td> </td><td class="right">      policy.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.1.3.  Agent Behavior</td><td> </td><td class="right">4.1.3.  Agent Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Diameter agents that support DOIC MUST ensure that all messages have</td><td> </td><td class="right">   Diameter agents that support DOIC MUST ensure that all messages have</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Supporting-Features AVP.  If a message handled by the DOIC</td><td> </td><td class="right">   the OC-Supporting-Features AVP.  If a message handled by the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 14, line 46</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 14, line 35</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A realm-type OCS entry MAY be identified by the pair of Application-</td><td> </td><td class="right">   A realm-type OCS entry MAY be identified by the pair of Application-</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Id and Realm-Id.</td><td> </td><td class="right">   Id and Realm-Id.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The host-type and realm-type OCS entries MAY include the following</td><td> </td><td class="right">   The host-type and realm-type OCS entries MAY include the following</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   information (the actual information stored is an implementation</td><td> </td><td class="right">   information (the actual information stored is an implementation</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   decision):</td><td> </td><td class="right">   decision):</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Sequence number (as received in OC-OLR)</td><td> </td><td class="right">   o  Sequence number (as received in OC-OLR)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0029" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  Time of expiry (derived from <span class="delete">OC-Validity-Duration AVP</span> received in</td><td> </td><td class="rblock">   o  Time of expiry (derived from <span class="insert">validity duration as</span> received in the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      the OC-OLR AVP and time of reception of the message carrying <span class="delete">OC-</span></td><td> </td><td class="rblock">      OC-OLR AVP and time of reception of the message carrying <span class="insert">OC-OLR</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      OLR</span> AVP)</td><td> </td><td class="rblock">      AVP)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Selected Abatement Algorithm (as received in OC-Supported-Features</td><td> </td><td class="right">   o  Selected Abatement Algorithm (as received in OC-Supported-Features</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      AVP)</td><td> </td><td class="right">      AVP)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   o  Abatement Algorithm specific input data (as received within the</td><td> </td><td class="right">   o  Abatement Algorithm specific input data (as received within the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0030" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      OC-OLR AVP, for example, <span class="delete">OC-Reduction-</span>Percentage for the Loss</td><td> </td><td class="rblock">      OC-OLR AVP, for example, <span class="insert">Reduction </span>Percentage for the Loss</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      abatement algorithm)</td><td> </td><td class="right">      abatement algorithm)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.1.2.  Overload Control State for Reporting Nodes</td><td> </td><td class="right">4.2.1.2.  Overload Control State for Reporting Nodes</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A reporting node SHOULD maintain OCS entries per supported Diameter</td><td> </td><td class="right">   A reporting node SHOULD maintain OCS entries per supported Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   application and per supported (and eventually selected) Abatement</td><td> </td><td class="right">   application and per supported (and eventually selected) Abatement</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Algorithm.</td><td> </td><td class="right">   Algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An OCS entry MAY be identified by the pair of Application-Id and</td><td> </td><td class="right">   An OCS entry MAY be identified by the pair of Application-Id and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Abatement Algorithm.</td><td> </td><td class="right">   Abatement Algorithm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l12" /><small>skipping to change at</small><em> page 18, line 16</em></th><th> </th><th><a name="part-r12" /><small>skipping to change at</small><em> page 17, line 51</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      last overload report for the overload condition was sent plus the</td><td> </td><td class="right">      last overload report for the overload condition was sent plus the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      validity duration included in that overload report.</td><td> </td><td class="right">      validity duration included in that overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.2.2.  Reacting Node Behavior</td><td> </td><td class="right">4.2.2.  Reacting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When a reacting node sends a request it MUST determine if that</td><td> </td><td class="right">   When a reacting node sends a request it MUST determine if that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request matches an active OCS.</td><td> </td><td class="right">   request matches an active OCS.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the request matches and active OCS then the reacting number MUST</td><td> </td><td class="right">   If the request matches and active OCS then the reacting number MUST</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   apply abatement treatment on the request.  The abatement treatment</td><td> </td><td class="right">   apply abatement treatment on the request.  The abatement treatment</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0031" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   applied depends on the abatement algorithm stored in the OCS.</td><td> </td><td class="rblock">   applied depends on the <span class="insert">the </span>abatement algorithm stored in the OCS.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   For the Loss abatement algorithm defined in this specification, see</td><td> </td><td class="right">   For the Loss abatement algorithm defined in this specification, see</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 5 for the abatement logic applied.</td><td> </td><td class="right">   Section 5 for the abatement logic applied.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the abatement treatment results in throttling of the request and</td><td> </td><td class="right">   If the abatement treatment results in throttling of the request and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   if the reacting node is an agent then the agent MUST send an</td><td> </td><td class="right">   if the reacting node is an agent then the agent MUST send an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   appropriate error as defined in section Section 7.</td><td> </td><td class="right">   appropriate error as defined in section Section 7.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In the case that the OCS entry validity duration expires or has a</td><td> </td><td class="right">   In the case that the OCS entry validity duration expires or has a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   validity duration of zero ("0"), meaning that it the reporting node</td><td> </td><td class="right">   validity duration of zero ("0"), meaning that it the reporting node</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l13" /><small>skipping to change at</small><em> page 20, line 26</em></th><th> </th><th><a name="part-r13" /><small>skipping to change at</small><em> page 20, line 14</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">4.3.  Protocol Extensibility</td><td> </td><td class="right">4.3.  Protocol Extensibility</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The overload control solution can be extended, e.g. with new traffic</td><td> </td><td class="right">   The overload control solution can be extended, e.g. with new traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   abatement algorithms, new report types or other new functionality.</td><td> </td><td class="right">   abatement algorithms, new report types or other new functionality.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining a new extension a new feature bit MUST be defined for</td><td> </td><td class="right">   When defining a new extension a new feature bit MUST be defined for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td> </td><td class="right">   the OC-Feature-Vector.  This feature bit is used to communicate</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   support for the new feature.</td><td> </td><td class="right">   support for the new feature.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0032" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   The <span class="delete">extension</span> MAY define new AVPs for use in DOIC Capability</td><td> </td><td class="rblock">   The <span class="insert">extention</span> MAY define new AVPs for use in DOIC Capability</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Announcement</span> and for use in DOIC Overload reporting.  These new AVP</td><td> </td><td class="rblock">   <span class="insert">Anouncement</span> and for use in DOIC Overload reporting.  These new AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   SHOULD be defined to be extensions to the OC-Supported-Features and</td><td> </td><td class="right">   SHOULD be defined to be extensions to the OC-Supported-Features and</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-OLR AVPs defined in this document.</td><td> </td><td class="right">   OC-OLR AVPs defined in this document.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   It should be noted that [RFC6733] defined Grouped AVP extension</td><td> </td><td class="right">   It should be noted that [RFC6733] defined Grouped AVP extension</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   mechanisms apply.  This allows, for example, defining a new feature</td><td> </td><td class="right">   mechanisms apply.  This allows, for example, defining a new feature</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that is mandatory to be understood even when piggybacked on an</td><td> </td><td class="right">   that is mandatory to be understood even when piggybacked on an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   existing applications.</td><td> </td><td class="right">   existing applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The handling of feature bits in the OC-Feature-Vector AVP that are</td><td> </td><td class="right">   The handling of feature bits in the OC-Feature-Vector AVP that are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   not associated with overload abatement algorithms MUST be specified</td><td> </td><td class="right">   not associated with overload abatement algorithms MUST be specified</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   by the extensions that define the features.</td><td> </td><td class="right">   by the extensions that define the features.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   When defining new report type values, the corresponding specification</td><td> </td><td class="right">   When defining new report type values, the corresponding specification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   MUST define the semantics of the new report types and how they affect</td><td> </td><td class="right">   MUST define the semantics of the new report types and how they affect</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the OC-OLR AVP handling.  The specification MUST also reserve a</td><td> </td><td class="right">   the OC-OLR AVP handling.  The specification MUST also reserve a</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0033" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   corresponding new feature <span class="delete">bit </span>in the OC-Feature-Vector AVP.</td><td> </td><td class="rblock">   corresponding new feature in the OC-Feature-Vector AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP can be expanded with optional sub-AVPs only if a</td><td> </td><td class="right">   The OC-OLR AVP can be expanded with optional sub-AVPs only if a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   legacy DOIC implementation can safely ignore them without breaking</td><td> </td><td class="right">   legacy DOIC implementation can safely ignore them without breaking</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   backward compatibility for the given OC-Report-Type AVP value.  If</td><td> </td><td class="right">   backward compatibility for the given OC-Report-Type AVP value.  If</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the new sub-AVPs imply new semantics for handling the indicated</td><td> </td><td class="right">   the new sub-AVPs imply new semantics for handling the indicated</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   report type, then a new OC-Report-Type AVP value MUST be defined.</td><td> </td><td class="right">   report type, then a new OC-Report-Type AVP value MUST be defined.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   New features (feature bits in the OC-Feature-Vector AVP) and report</td><td> </td><td class="right">   New features (feature bits in the OC-Feature-Vector AVP) and report</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As</td><td> </td><td class="right">   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   with any Diameter specification, new AVPs MUST also be registered</td><td> </td><td class="right">   with any Diameter specification, new AVPs MUST also be registered</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l14" /><small>skipping to change at</small><em> page 21, line 37</em></th><th> </th><th><a name="part-r14" /><small>skipping to change at</small><em> page 21, line 27</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   request a percentage reduction in the amount of traffic sent.  The</td><td> </td><td class="right">   request a percentage reduction in the amount of traffic sent.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   traffic impacted by the requested reduction depends on the type of</td><td> </td><td class="right">   traffic impacted by the requested reduction depends on the type of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload report.</td><td> </td><td class="right">   overload report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Reporting nodes use a strategy of applying abatement logic to the</td><td> </td><td class="right">   Reporting nodes use a strategy of applying abatement logic to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requested percentage of request messages sent (or handled in the case</td><td> </td><td class="right">   requested percentage of request messages sent (or handled in the case</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   of agents) by the reacting node that are impacted by the overload</td><td> </td><td class="right">   of agents) by the reacting node that are impacted by the overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   report.</td><td> </td><td class="right">   report.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   From a conceptual level, the logic at the reacting node could be</td><td> </td><td class="right">   From a conceptual level, the logic at the reacting node could be</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0034" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   outlined as follows.</td><td> </td><td class="rblock">   outlined as follows.  <span class="insert">In this discussion assume that the reacting</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   node is also the sending node.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   1.  An overload report is received and the associated overload state</td><td> </td><td class="right">   1.  An overload report is received and the associated overload state</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0035" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       is <span class="delete">either saved or updated (if required)</span> by the reacting node.</td><td> </td><td class="rblock">       is <span class="insert">saved</span> by the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   2.  A new Diameter request is generated by the application running on</td><td> </td><td class="right">   2.  A new Diameter request is generated by the application running on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       the reacting node.</td><td> </td><td class="right">       the reacting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   3.  The reacting node determines that an active overload report</td><td> </td><td class="right">   3.  The reacting node determines that an active overload report</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0036" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">       applies to the <span class="delete">request, as indicated by the corresponding OCS</span></td><td> </td><td class="rblock">       applies to the <span class="insert">request.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       entry.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   4.  The reacting node determines if abatement should be applied to</td><td> </td><td class="right">   4.  The reacting node determines if abatement should be applied to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       the request.  One approach that could be taken for each request</td><td> </td><td class="right">       the request.  One approach that could be taken for each request</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       is to select a random number between 1 and 100.  If the random</td><td> </td><td class="right">       is to select a random number between 1 and 100.  If the random</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       number is less than the indicated reduction percentage then the</td><td> </td><td class="right">       number is less than the indicated reduction percentage then the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       request is given abatement treatment, otherwise the request is</td><td> </td><td class="right">       request is given abatement treatment, otherwise the request is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">       given normal routing treatment.</td><td> </td><td class="right">       given normal routing treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">5.2.  Reporting Node Behavior</td><td> </td><td class="right">5.2.  Reporting Node Behavior</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l15" /><small>skipping to change at</small><em> page 23, line 12</em></th><th> </th><th><a name="part-r15" /><small>skipping to change at</small><em> page 23, line 6</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If reacting node comes out of the 100 percent traffic reduction as a</td><td> </td><td class="right">   If reacting node comes out of the 100 percent traffic reduction as a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   result of the overload report timing out, the following concerns are</td><td> </td><td class="right">   result of the overload report timing out, the following concerns are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   RECOMMENDED to be applied.  The reacting node sending the traffic</td><td> </td><td class="right">   RECOMMENDED to be applied.  The reacting node sending the traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   should be conservative and, for example, first send "probe" messages</td><td> </td><td class="right">   should be conservative and, for example, first send "probe" messages</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   to learn the overload condition of the overloaded node before</td><td> </td><td class="right">   to learn the overload condition of the overloaded node before</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   converging to any traffic amount/rate decided by the sender.  Similar</td><td> </td><td class="right">   converging to any traffic amount/rate decided by the sender.  Similar</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   concerns apply in all cases when the overload report times out unless</td><td> </td><td class="right">   concerns apply in all cases when the overload report times out unless</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the previous overload report stated 0 percent reduction.</td><td> </td><td class="right">   the previous overload report stated 0 percent reduction.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   If the reacting node does not receive an OLR in messages sent to the</td><td> </td><td class="right">   If the reacting node does not receive an OLR in messages sent to the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0037" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   form<span class="delete">er</span>ly overloaded node then the reacting node SHOULD slowly</td><td> </td><td class="rblock">   form<span class="insert">al</span>ly overloaded node then the reacting node SHOULD slowly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   increase the rate of traffic sent to the overloaded node.</td><td> </td><td class="right">   increase the rate of traffic sent to the overloaded node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   It is suggested that the reacting node decrease the amount of traffic</td><td> </td><td class="right">   It is suggested that the reacting node decrease the amount of traffic</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   given abatement treatment by 20% each second until the reduction is</td><td> </td><td class="right">   given abatement treatment by 20% each second until the reduction is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   completely removed and no traffic is given abatement treatment.</td><td> </td><td class="right">   completely removed and no traffic is given abatement treatment.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The goal of this behavior is to reduce the probability of overload</td><td> </td><td class="right">      The goal of this behavior is to reduce the probability of overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      condition thrashing where an immediate transition from 100%</td><td> </td><td class="right">      condition thrashing where an immediate transition from 100%</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      reduction to 0% reduction results in the reporting node moving</td><td> </td><td class="right">      reduction to 0% reduction results in the reporting node moving</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      quickly back into an overload condition.</td><td> </td><td class="right">      quickly back into an overload condition.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l16" /><small>skipping to change at</small><em> page 24, line 32</em></th><th> </th><th><a name="part-r16" /><small>skipping to change at</small><em> page 24, line 24</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following capabilities are defined in this document:</td><td> </td><td class="right">   The following capabilities are defined in this document:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td> </td><td class="right">   OLR_DEFAULT_ALGO (0x0000000000000001)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      When this flag is set by the DOIC node it means that the default</td><td> </td><td class="right">      When this flag is set by the DOIC node it means that the default</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      traffic abatement (loss) algorithm is supported.</td><td> </td><td class="right">      traffic abatement (loss) algorithm is supported.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.3.  OC-OLR AVP</td><td> </td><td class="right">6.3.  OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the</td><td> </td><td class="right">   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0038" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   information necessary to convey an overload <span class="delete">report on an overload</span></td><td> </td><td class="rblock">   information necessary to convey an overload <span class="insert">report.</span>  The OC-OLR AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   condition at the reporting node.</span>  The OC-OLR AVP does not explicitly</td><td> </td><td class="rblock">   does not explicitly contain all information needed by the reacting</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   contain all information needed by the reacting node to decide whether</td><td> </td><td class="rblock">   node to decide whether a subsequent request must undergo a throttling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   a subsequent request must undergo a throttling process with the</td><td> </td><td class="rblock">   process with the received reduction percentage.  The value of the <span class="insert">OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   received reduction percentage.  The value of the <span class="delete">OC-Report-Type</span> AVP</td><td> </td><td class="rblock"><span class="insert">   Report-Type</span> AVP within the OC-OLR AVP indicates which implicit</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   within the OC-OLR AVP indicates which implicit information is</td><td> </td><td class="rblock">   information is relevant for this decision (see Section 6.6).  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   relevant for this decision (see Section 6.6).  The application the</td><td> </td><td class="rblock">   application the OC-OLR AVP applies to is the same as the <span class="insert">Application-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   OC-OLR AVP applies to is the same as the <span class="delete">Application-Id</span> found in the</td><td> </td><td class="rblock"><span class="insert">   Id</span> found in the Diameter message header.  The host or realm the <span class="insert">OC-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   Diameter message header.  The host or realm the <span class="delete">OC-OLR</span> AVP concerns</td><td> </td><td class="rblock"><span class="insert">   OLR</span> AVP concerns is determined from the Origin-Host AVP and/or</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   is determined from the Origin-Host AVP and/or Origin-Realm AVP found</td><td> </td><td class="rblock">   Origin-Realm AVP found in the encapsulating Diameter command.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   in the encapsulating Diameter command.  The OC-OLR AVP is intended to</td><td> </td><td class="rblock">   OC-OLR AVP is intended to be sent only by a reporting node.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   be sent only by a reporting node.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      OC-OLR ::= &lt; AVP Header: TBD2 &gt;</td><td> </td><td class="right">      OC-OLR ::= &lt; AVP Header: TBD2 &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 &lt; OC-Sequence-Number &gt;</td><td> </td><td class="right">                 &lt; OC-Sequence-Number &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 &lt; OC-Report-Type &gt;</td><td> </td><td class="right">                 &lt; OC-Report-Type &gt;</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 [ OC-Reduction-Percentage ]</td><td> </td><td class="right">                 [ OC-Reduction-Percentage ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">                 [ OC-Validity-Duration ]</td><td> </td><td class="right">                 [ OC-Validity-Duration ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">               * [ AVP ]</td><td> </td><td class="right">               * [ AVP ]</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td> </td><td class="right">   Note that if a Diameter command were to contain multiple OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td> </td><td class="right">   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0039" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   with unknown values SHOULD be silently discarded <span class="delete">by reacting nodes</span></td><td> </td><td class="rblock">   with unknown values SHOULD be silently discarded and the event SHOULD</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   and the event SHOULD be logged.</td><td> </td><td class="rblock">   be logged.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.4.  OC-Sequence-Number AVP</td><td> </td><td class="right">6.4.  OC-Sequence-Number AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td> </td><td class="right">   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Its usage in the context of overload control is described in</td><td> </td><td class="right">   Its usage in the context of overload control is described in</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 4.2.</td><td> </td><td class="right">   Section 4.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td> </td><td class="right">   From the functionality point of view, the OC-Sequence-Number AVP MUST</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   be used as a non-volatile increasing counter for a sequence of</td><td> </td><td class="right">   be used as a non-volatile increasing counter for a sequence of</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overload reports between two DOIC nodes for the same overload</td><td> </td><td class="right">   overload reports between two DOIC nodes for the same overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l17" /><small>skipping to change at</small><em> page 26, line 49</em></th><th> </th><th><a name="part-r17" /><small>skipping to change at</small><em> page 26, line 45</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The value of the Destination-Realm AVP in the request matches the</td><td> </td><td class="right">      The value of the Destination-Realm AVP in the request matches the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      value of the Origin-Realm AVP of the received message that</td><td> </td><td class="right">      value of the Origin-Realm AVP of the received message that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      contained the OC-OLR AVP.</td><td> </td><td class="right">      contained the OC-OLR AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      The value of the Application-ID in the Diameter Header of the</td><td> </td><td class="right">      The value of the Application-ID in the Diameter Header of the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      request matches the value of the Application-ID of the Diameter</td><td> </td><td class="right">      request matches the value of the Application-ID of the Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Header of the received message that contained the OC-OLR AVP.</td><td> </td><td class="right">      Header of the received message that contained the OC-OLR AVP.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td> </td><td class="right">   The OC-Report-Type AVP is envisioned to be useful for situations</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   where a reacting node needs to apply different overload treatments</td><td> </td><td class="right">   where a reacting node needs to apply different overload treatments</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0040" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   for different <span class="delete">overload contexts</span>.  For example, the reacting node(s)</td><td> </td><td class="rblock">   for different <span class="insert">"types" of overload</span>.  For example, the reacting node(s)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   might need to throttle differently requests sent to a specific server</td><td> </td><td class="right">   might need to throttle differently requests sent to a specific server</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   (identified by the Destination-Host AVP in the request) and requests</td><td> </td><td class="right">   (identified by the Destination-Host AVP in the request) and requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   that can be handled by any server in a realm.</td><td> </td><td class="right">   that can be handled by any server in a realm.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">6.7.  OC-Reduction-Percentage AVP</td><td> </td><td class="right">6.7.  OC-Reduction-Percentage AVP</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td> </td><td class="right">   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   and describes the percentage of the traffic that the sender is</td><td> </td><td class="right">   and describes the percentage of the traffic that the sender is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   requested to reduce, compared to what it otherwise would send.  The</td><td> </td><td class="right">   requested to reduce, compared to what it otherwise would send.  The</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   OC-Reduction-Percentage AVP applies to the default (loss) algorithm</td><td> </td><td class="right">   OC-Reduction-Percentage AVP applies to the default (loss) algorithm</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l18" /><small>skipping to change at</small><em> page 30, line 39</em></th><th> </th><th><a name="part-r18" /><small>skipping to change at</small><em> page 30, line 39</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   A similar attack involves an otherwise authorized Diameter node that</td><td> </td><td class="right">   A similar attack involves an otherwise authorized Diameter node that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   sends an inappropriate overload report.  For example, a server for</td><td> </td><td class="right">   sends an inappropriate overload report.  For example, a server for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   the realm "example.com" might send an overload report indicating that</td><td> </td><td class="right">   the realm "example.com" might send an overload report indicating that</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   a competitor's realm "example.net" is overloaded.  If other nodes act</td><td> </td><td class="right">   a competitor's realm "example.net" is overloaded.  If other nodes act</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   on the report, they may falsely believe that "example.net" is</td><td> </td><td class="right">   on the report, they may falsely believe that "example.net" is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded, effectively reducing that realm's capacity.  Therefore,</td><td> </td><td class="right">   overloaded, effectively reducing that realm's capacity.  Therefore,</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   it's critical that nodes validate that an overload report received</td><td> </td><td class="right">   it's critical that nodes validate that an overload report received</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   from a peer actually falls within that peer's responsibility before</td><td> </td><td class="right">   from a peer actually falls within that peer's responsibility before</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   acting on the report or forwarding the report to other peers.  For</td><td> </td><td class="right">   acting on the report or forwarding the report to other peers.  For</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0041" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   example, an overload report from a peer that applies to a realm not</td><td> </td><td class="rblock">   example, an overload report from a<span class="insert">n</span> peer that applies to a realm not</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   handled by that peer is suspect.</td><td> </td><td class="right">   handled by that peer is suspect.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   An attacker might use the information in an overload report to assist</td><td> </td><td class="right">   An attacker might use the information in an overload report to assist</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   in certain attacks.  For example, an attacker could use information</td><td> </td><td class="right">   in certain attacks.  For example, an attacker could use information</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   about current overload conditions to time a DoS attack for maximum</td><td> </td><td class="right">   about current overload conditions to time a DoS attack for maximum</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   effect, or use subsequent overload reports as a feedback mechanism to</td><td> </td><td class="right">   effect, or use subsequent overload reports as a feedback mechanism to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   learn the results of a previous or ongoing attack.</td><td> </td><td class="right">   learn the results of a previous or ongoing attack.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">9.2.  Denial of Service Attacks</td><td> </td><td class="right">9.2.  Denial of Service Attacks</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l19" /><small>skipping to change at</small><em> page 34, line 50</em></th><th> </th><th><a name="part-r19" /><small>skipping to change at</small><em> page 34, line 50</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Non supporting agents</td><td> </td><td class="right">   Non supporting agents</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Due to the way that realm-routed requests are handled in Diameter</td><td> </td><td class="right">      Due to the way that realm-routed requests are handled in Diameter</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      networks, with the server selection for the request done by an</td><td> </td><td class="right">      networks, with the server selection for the request done by an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      agent, it is recommended that deployments upgrade all agents with</td><td> </td><td class="right">      agent, it is recommended that deployments upgrade all agents with</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      direct connections to servers prior to enabling the DOIC solution</td><td> </td><td class="right">      direct connections to servers prior to enabling the DOIC solution</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      in the Diameter network.</td><td> </td><td class="right">      in the Diameter network.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Topology hiding interactions</td><td> </td><td class="right">   Topology hiding interactions</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0042" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      There exist proxies that implement what is refer<span class="delete">r</span>ed to as Topology</td><td> </td><td class="rblock">      There exist proxies that implement what is refered to as Topology</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Hiding.  This can include cases where the agent modifies the</td><td> </td><td class="right">      Hiding.  This can include cases where the agent modifies the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Origin-Host in answer messages.  The behavior of the DOIC solution</td><td> </td><td class="right">      Origin-Host in answer messages.  The behavior of the DOIC solution</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      is not well understood when this happens.  As such, the DOIC</td><td> </td><td class="right">      is not well understood when this happens.  As such, the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      solution does not address this scenario.</td><td> </td><td class="right">      solution does not address this scenario.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Appendix C.  Considerations for Applications Integrating the DOIC</td><td> </td><td class="right">Appendix C.  Considerations for Applications Integrating the DOIC</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">             Solution</td><td> </td><td class="right">             Solution</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0043" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   T<span class="delete">h</span>is section outlines considerations to be taken into account when</td><td> </td><td class="rblock">   T<span class="insert">H</span>is section outlines considerations to be taken into account when</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   integrating the DOIC solution into Diameter applications.</td><td> </td><td class="right">   integrating the DOIC solution into Diameter applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">C.1.  Application Classification</td><td> </td><td class="right">C.1.  Application Classification</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The following is a classification of Diameter applications and</td><td> </td><td class="right">   The following is a classification of Diameter applications and</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0044" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">request types.</span>  This discussion is meant to document factors that</td><td> </td><td class="rblock">   <span class="insert">requests.</span>  This discussion is meant to document factors that play</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   play into decisions made by the Diameter identity responsible for</td><td> </td><td class="rblock">   into decisions made by the Diameter identity responsible for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   handling overload reports.</td><td> </td><td class="rblock">   overload reports.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td> </td><td class="right">   Section 8.1 of [RFC6733] defines two state machines that imply two</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   types of applications, session-less and session-based applications.</td><td> </td><td class="right">   types of applications, session-less and session-based applications.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The primary difference between these types of applications is the</td><td> </td><td class="right">   The primary difference between these types of applications is the</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   lifetime of Session-Ids.</td><td> </td><td class="right">   lifetime of Session-Ids.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   For session-based applications, the Session-Id is used to tie</td><td> </td><td class="right">   For session-based applications, the Session-Id is used to tie</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   multiple requests into a single session.</td><td> </td><td class="right">   multiple requests into a single session.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0045" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The Credit-Control application defined in [RFC4006] is an example of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   a Diameter session-based application.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   In session-less applications, the lifetime of the Session-Id is a</td><td> </td><td class="right">   In session-less applications, the lifetime of the Session-Id is a</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   single Diameter transaction, i.e. the session is implicitly</td><td> </td><td class="right">   single Diameter transaction, i.e. the session is implicitly</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   terminated after a single Diameter transaction and a new Session-Id</td><td> </td><td class="right">   terminated after a single Diameter transaction and a new Session-Id</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   is generated for each Diameter request.</td><td> </td><td class="right">   is generated for each Diameter request.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   For the purposes of this discussion, session-less applications are</td><td> </td><td class="right">   For the purposes of this discussion, session-less applications are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   further divided into two types of applications:</td><td> </td><td class="right">   further divided into two types of applications:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Stateless applications:</td><td> </td><td class="right">   Stateless applications:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Requests within a stateless application have no relationship to</td><td> </td><td class="right">      Requests within a stateless application have no relationship to</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      each other.  The 3GPP defined S13 application is an example of a</td><td> </td><td class="right">      each other.  The 3GPP defined S13 application is an example of a</td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0046" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      stateless application [S13], where only a Diameter command is</td><td> </td><td class="rblock">      stateless application [S13], <span class="insert">--&gt; </span>where only a Diameter command is</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      defined between a client and a server and no state is maintained</td><td> </td><td class="right">      defined between a client and a server and no state is maintained</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      between two consecutive transactions.</td><td> </td><td class="right">      between two consecutive transactions.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Pseudo-session applications:</td><td> </td><td class="right">   Pseudo-session applications:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Applications that do not rely on the Session-Id AVP for</td><td> </td><td class="right">      Applications that do not rely on the Session-Id AVP for</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      correlation of application messages related to the same session</td><td> </td><td class="right">      correlation of application messages related to the same session</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      but use other session-related information in the Diameter requests</td><td> </td><td class="right">      but use other session-related information in the Diameter requests</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td> </td><td class="right">      for this purpose.  The 3GPP defined Cx application [Cx] is an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      example of a pseudo-session application.</td><td> </td><td class="right">      example of a pseudo-session application.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0047" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">The Credit-Control application defined in [RFC4006] is an example of</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   a Diameter session-based application.</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   The handling of overload reports must take the type of application</td><td> </td><td class="right">   The handling of overload reports must take the type of application</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   into consideration, as discussed in Appendix C.2.</td><td> </td><td class="right">   into consideration, as discussed in Appendix C.2.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">C.2.  Application Type Overload Implications</td><td> </td><td class="right">C.2.  Application Type Overload Implications</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   This section discusses considerations for mitigating overload</td><td> </td><td class="right">   This section discusses considerations for mitigating overload</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   reported by a Diameter entity.  This discussion focuses on the type</td><td> </td><td class="right">   reported by a Diameter entity.  This discussion focuses on the type</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   of application.  Appendix C.3 discusses considerations for handling</td><td> </td><td class="right">   of application.  Appendix C.3 discusses considerations for handling</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   various request types when the target server is known to be in an</td><td> </td><td class="right">   various request types when the target server is known to be in an</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   overloaded state.</td><td> </td><td class="right">   overloaded state.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
      <tr bgcolor="gray" ><td></td><th><a name="part-l20" /><small>skipping to change at</small><em> page 39, line 13</em></th><th> </th><th><a name="part-r20" /><small>skipping to change at</small><em> page 39, line 13</em></th><td></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Pseudo-session requests:</td><td> </td><td class="right">   Pseudo-session requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      Throttling decisions for pseudo-session requests can take into</td><td> </td><td class="right">      Throttling decisions for pseudo-session requests can take into</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      consideration where individual requests fit into the overall</td><td> </td><td class="right">      consideration where individual requests fit into the overall</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      sequence of requests within the pseudo session.  Requests that are</td><td> </td><td class="right">      sequence of requests within the pseudo session.  Requests that are</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      earlier in the sequence might be throttled more aggressively than</td><td> </td><td class="right">      earlier in the sequence might be throttled more aggressively than</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">      requests that occur later in the sequence.</td><td> </td><td class="right">      requests that occur later in the sequence.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Intra-session requests:</td><td> </td><td class="right">   Intra-session requests:</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td><a name="diff0048" /></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      There are two <span class="delete">types</span> of intra-sessions <span class="delete">requests,</span> requests that</td><td> </td><td class="rblock">      There are two <span class="insert">classes</span> of intra-sessions <span class="insert">requests.  The first class</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      terminate a <span class="delete">session</span> and the <span class="delete">remainder of intra-session requests.</span></td><td> </td><td class="rblock"><span class="insert">      consists of</span> requests that terminate a <span class="insert">session.  The second class</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      Implementors and operators may choose to throttle <span class="delete">session-</span></td><td> </td><td class="rblock"><span class="insert">      comprises requests that are used by the Diameter client</span> and <span class="insert">server</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      terminating</span> requests less aggressively in order to gracefully</td><td> </td><td class="rblock"><span class="insert">      to maintain</span> the <span class="insert">ongoing session state.</span>  Implementors and operators</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      terminate sessions, allow clean-up of the related resources (e.g.</td><td> </td><td class="rblock">      may choose to throttle <span class="insert">session-terminating</span> requests less</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      session state) and avoid the need for additional intra-session</td><td> </td><td class="rblock">      aggressively in order to gracefully terminate sessions, allow</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      requests.  Favoring <span class="delete">session-termination</span> requests may reduce the</td><td> </td><td class="rblock">      clean-up of the related resources (e.g. session state) and avoid</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      session management impact on the overloaded entity.  The default</td><td> </td><td class="rblock">      the need for additional intra-session requests.  Favoring <span class="insert">session-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      handling of other <span class="delete">intra-session</span> requests might be to treat them</td><td> </td><td class="rblock"><span class="insert">      termination</span> requests may reduce the session management impact on</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      equally when making throttling decisions.  There might also be</td><td> </td><td class="rblock">      the overloaded entity.  The default handling of other <span class="insert">intra-</span></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      application level considerations whether some request types are</td><td> </td><td class="rblock"><span class="insert">      session</span> requests might be to treat them equally when making</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock">      favored over others.</td><td> </td><td class="rblock">      throttling decisions.  There might also be application level</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      considerations whether some request types are favored over others.</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">Authors' Addresses</td><td> </td><td class="right">Authors' Addresses</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Jouni Korhonen (editor)</td><td> </td><td class="right">   Jouni Korhonen (editor)</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Broadcom</td><td> </td><td class="right">   Broadcom</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Porkkalankatu 24</td><td> </td><td class="right">   Porkkalankatu 24</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Helsinki  FIN-00180</td><td> </td><td class="right">   Helsinki  FIN-00180</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Finland</td><td> </td><td class="right">   Finland</td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
      <tr><td class="lineno" valign="top"></td><td class="left">   Email: jouni.nospam@gmail.com</td><td> </td><td class="right">   Email: jouni.nospam@gmail.com</td><td class="lineno" valign="top"></td></tr>

     <tr><td></td><td class="left"></td><td> </td><td class="right"></td><td></td></tr>
     <tr bgcolor="gray"><th colspan="5" align="center"><a name="end">&nbsp;End of changes. 48 change blocks.&nbsp;</a></th></tr>
     <tr class="stats"><td></td><th><i>109 lines changed or deleted</i></th><th><i> </i></th><th><i>99 lines changed or added</i></th><td></td></tr>
     <tr><td colspan="5" align="center" class="small"><br/>This html diff was produced by rfcdiff 1.41. The latest version is available from <a href="http://www.tools.ietf.org/tools/rfcdiff/" >http://tools.ietf.org/tools/rfcdiff/</a> </td></tr>
   </table>
   </body>
   </html>
X-Generator: pyht 0.35

<!-- args: {'--oldcolour': 'red', '--width': '', 'difftype': '--html', 'filename2': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 25, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 22, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Control (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "
 MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress."\n\n   This Internet-Draft will expire on April 25, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the person
 s identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview 
 . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  11\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14\n       4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . .
  . . . .  17\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  20\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  21\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25\n     6.5.  OC-Validity-Duration AVP  . . . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26\n     6.7.  OC-Reducti
 on-Percentage AVP . . . . . . . . . . . . . . .  27\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  28\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  29\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  29\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  29\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . . . . .  31\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . 
 . . . . . . . . . . . . .  32\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  33\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  33\n   Appendix A.  Issues left for future specifications  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  34\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  34\n     A.3.  Requirements Conformance Analysis . . . . . . . . . . . .  34\n     A.4.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  34\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  34\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  35\n     C.1.  Application Classification  . . . . . . . . . . . . . . .  35\n     C.2.  Application Type Overload Implications  . . . . . . . . .  36\n     C.3
 .  Request Transaction Classification  . . . . . . . . . . .  37\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), refered to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.  See Appendix A for a list of\n   extensions that are currently being considered.  See Appendix A.3 for\n   an analysis of the conformance to the requirements specified in\n   [RFC7068].\n\n   The solution defined in this specification addresses 
 Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution is designed to apply to existing\n   and future Diameter applications, requires no changes to the Diameter\n   base protocol [RFC6733] and is deployable in environments where some\n   Diameter nodes do not implement the Diameter overload control\n   solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n      An algorithm requested by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload con
 trol.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      State describing an occurrence of overload control maintained by\n      reporting and reacting nodes.\n\n   Overload Report (OLR)\n\n      A set of AVPs sent by a reporting node indicating the start or\n      continuation of an occurrence of overload control.\n\n   Reacting Node\n\n      A Diameter node that consumes and acts upon a report.\n\n   Realm-Routed Request\n\n      The set of reque
 sts that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a Diameter Client or Diameter\n      Server dropping requests, or a Diameter Agent rejecting requests\n      with appropriate error responses.  In extreme cases reporting\n      nodes can also throttle requests when the requested reductions in\n      traffic does not sufficiently address the overload scenario.\n\n\n\n3.  Solution Overview\n\n   The Diameter Overload Information Conveyance (DOIC) solution allows\n   Diameter nodes to request other nodes to perform overload abatemen
 t\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node consumes OLRs, and performs whatever actions are\n   needed to fulfill the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s role as a DOIC node is independent of its Diameter role.\n   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,\n   even 
 though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter Servers\n   can send requests towards Diameter Clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (Section 6.2) into existing reques
 ts and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, OC-Feature-Vector\n   AVPs apply to the realm and application of the enclosing message.\n   This implies that a node may support DOIC for one application and/or\n   realm, but not another, and may indicate different DOIC parameters\n   for each application and realm for which it supports DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR, and the procedures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm (Section 5).  Futu
 re specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send throttled requests to other destinations\n   or via other agents.  On the other hand, an entire Diameter realm may\n   be overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node 
 knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   While a reporting node sends OLRs
  to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unchanged.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application messages.\n   This is made possible by adding overload control top-level AVPs, the\n   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into\n   existing commands when t
 he corresponding Command Code Format (CCF)\n   specification allows adding new optional AVPs (see Section 1.3.4 of\n   [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all request messages originated or relayed\n   by the Diameter node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the Diameter node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determined based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "repo
 rting node").\n   Therefore, in a typical "client-server" deployment, the Diameter\n   Client MAY report its overload condition to the Diameter Server for\n   any Diameter Server initiated message exchange.  An example of such\n   is the Diameter Server requesting a re-authentication from a Diameter\n   Client.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solution supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is referred to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA mechanism uses the OC-Supported-Features AVPs to indicate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solut
 ion inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      clients.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages 
 to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n      nodes to maintain state to insure that overload reports can be\n      proper
 ly handled.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken not to introduce\n      interoperability issues for downstream or upstream DOIC nodes
 .\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, a sequence number, the length of time\n   that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   Host reports apply to traffic that is sent to a specific Diameter\n   host.  The applies to requests that contain the Destination-Host AVP\n   that contains a DiameterIdentity that matches that of the overload\n   report.  These requests are referred to as host-routed requests.  A\n   host report also applies to requests that do not have a Destination-\n   Host AVP when the selected route for the request is a connection to\n   the impacted host.\n\n   Realm reports apply to realm-route
 d requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the Diameter application.  A realm report\n   will generally impact the traffic sent to multiple hosts and, as\n   such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the conditi
 on.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacting nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The report
 ing node sends an overload report\n   with a duration of zero to indicate that the overload condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validaty-Duration AVP in the overload report and\n   stops applying the abatement algorithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solution is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in th
 e OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Features AVP, if additional information about the new\n   feature is required.\n\n   Overload abatement algorithms use the OC-OLR AVP to communicate\n   overload occurrances.  This AVP can also be extended to add new AVPs\n   allowing a reporting nodes to communicate additional information\n   about handling an overload condition.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If necessary, new extensions can also define new top-level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overlo
 ad information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _-------
 ---------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between servers and\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting nod
 e MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n      Not all DOIC features will necessarily apply to all transactions.\n      For instance, there may be a future extension that only applies to\n      session based applications.  A reacting node that supports this\n      extension can choose to not include it for non session based\n      applications.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken
  when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n   If the request message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 12]\n_\nI
 nternet-Draft                    DOIC                      October 2014\n\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   supported by reacting node(s).  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n\n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request messages OC-Supported-Features AVP.  The\n   abatement algorithm included MUST indicate the abatement algorithm\n   the reporting node wants the reacting node to use when the reporting\n   node enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer mes
 sages.\n\n   The reporting node SHOULD indicate support for other DOIC features it\n   supports and that apply to the transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP are based on local reporting node\n      policy.\n\n4.1.3.  Agent Behavior\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n      For instance, if the agent supports a superset of the features\n      reported by the reacting node then the agent
  might choose, based\n      on local policy, to advertise that superset of features to the\n      reporting node.\n\n      If the agent modifies the OC-Supported-Features header sent to the\n      reporting node then it might also need to modify the OC-Supported-\n      Features AVP sent to a reacting node in the subsequent answer\n      message, as it cannot send an indication of support for features\n      that are not supported by the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain Overload Control State\n   (OCS) for active overload conditions.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node SHOULD maintain the following OCS per supported\n   Diameter application:\n\n   o  A host-type OCS entry for each Dest
 ination-Host to which it sends\n      host-type requests and\n\n   o  A realm-type OCS entry for each Destination-Realm to which it\n      sends realm-type requests.\n\n   A host-type OCS entry MAY be identified by the pair of Application-Id\n   and Host-Id.\n\n   A realm-type OCS entry MAY be identified by the pair of Application-\n   Id and Realm-Id.\n\n   The host-type and realm-type OCS entries MAY include the following\n   information (the actual information stored is an implementation\n   decision):\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (derived from validity duration as received in the\n      OC-OLR AVP and time of reception of the message carrying OC-OLR\n      AVP)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-Features\n      AVP)\n\n   o  Abatement Algorithm specific input data (as received within the\n      OC-OLR AVP, for example, Reduction Percentage for the Loss\n      abatement algorithm)\n\n4.2.1.2.  Overload Co
 ntrol State for Reporting Nodes\n\n   A reporting node SHOULD maintain OCS entries per supported Diameter\n   application and per supported (and eventually selected) Abatement\n   Algorithm.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   An OCS entry MAY be identified by the pair of Application-Id and\n   Abatement Algorithm.\n\n   The OCS entry for a given pair of Application and Abatement Algorithm\n   MAY include the information (the actual information stored is an\n   implementation decision):\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration\n\n   o  Expiration Time\n\n   o  Algorithm specific input data (for example, the Reduction\n      Percentage for the Loss Abatement Algorithm)\n\n4.2.1.3.  Reacting Node Maintainence of Overload Control State\n\n   When a reacting node receives an OC-OLR AVP, it MUST determine if it\n   is for an 
 existing or new overload condition.\n\n      For the remainder of this section the term OLR referres to the\n      combination of the contents of the received OC-OLR AVP and the\n      abatement algorithm indicated in the received OC-Supported-\n      Features AVP.\n\n   The OLR is for an existing overload condition if the reacting node\n   has an OCS that matches the received OLR.\n\n   For a host report-type this means it matches the app-id and host-id\n   in an existing host OCS entry.\n\n   For a realm report-type this means it matches the app-id and realm-id\n   in an existing realm OCS entry.\n\n   If the OLR is for an existing overload condition then it MUST\n   determine if the OLR is a retransmission or an update to the existing\n   OLR.\n\n   If the sequence number for the received OLR is greater than the\n   sequence number stored in the matching OCS entry then the reacting\n   node MUST update the matching OCS entry.\n\n   If the sequence number for the received OLR is l
 ess than or equal to\n   the sequence number in the matching OCS entry then the reacting node\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   MUST silently ignore the received OLR.  The matching OCS MUST NOT be\n   updated in this case.\n\n   If the received OLR is for a new overload condition then the reacting\n   node MUST generate a new OCS entry for the overload condition.\n\n   For a host report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and host-id of\n   the Origin-Host in the received message.\n\n   For a realm report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and realm-id of\n   the Origin-Realm in the received message.\n\n   If the received OLR contains a validity duration of zero ("0") then\n   the reacting node MUST update the OCS
  entry as being expired.\n\n      Note that it is not necessarily appropriate to delete the OCS\n      entry, as there is recommended behavior that the reacting node\n      slowly returns to full traffic when ending an overload abatement\n      period.\n\n   The reacting node does not delete an OCS when receiving an answer\n   message that does not contain an OC-OLR AVP (i.e. absence of OLR\n   means "no change").\n\n4.2.1.4.  Reporting Node Maintainence of Overload Control State\n\n   A reporting node SHOULD create a new OCS entry when entering an\n   overload condition.\n\n      If the reporting node knows through absence of the OC-Supported-\n      Features AVP in received messages that there are no reacting nodes\n      supporting DOIC then the reporting node can choose to not create\n      OCS entries.\n\n   When generating a new OCS entry the sequence nubmer MAY be set to any\n   value if there is no unexpired overload report for previous overload\n   conditions at any reactin
 g node.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number in an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   The reporting node MUST update an OCS entry when it needs to adjust\n   the validity duration of the overload contition at reacting nodes.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For instance, if the reporting node wishes to instruct reacting\n      nodes to continue overload abatement for a longer period of time\n      that originally communicated.  This also applies if the reporting\n      node wishes to shorten the period of time that overload abatement\n      is to continue.\n\n   A reporting node MUST NOT update the abatement algorithm in an active\n   OCS
  entry.\n\n   A reporting node MUST update an OCS entry when it wishes to adjust\n   the any abatement algorithm specific parameters, including the\n   reduction percentage used for the Loss abatement algorithm.\n\n      For instance, if the reporting node wishes to change the reduction\n      percentage either higher, if the overload condition has worsened,\n      or lower, if the overload condition has improved, then the\n      reporting node would update the appropriate OCS entry.\n\n   The reporting node MUST update the sequence number associated with\n   the OCS entry anytime the contents of the OCS entry are changed.\n   This will result in a new sequence number being sent to reacting\n   nodes, instructing the reacting nodes to process the OC-OLR AVP.\n\n   A reporting node SHOULD update an OCS entry with a validity duration\n   of zero ("0") when the overload condition ends.\n\n      If the reporting node knows that the OCS entries in the reacting\n      nodes are near expir
 ation then the reporting node can decide\n      delete the OCS entry.\n\n   The reporting node MUST keep an OCS entry with a validity duration of\n   zero ("0") for a period of time long enough to ensure that any\n   reacting node OCS entry created as a result of the overload condition\n   in the reporting node exists.\n\n      This period of time can be determined by calculating the time the\n      last overload report for the overload condition was sent plus the\n      validity duration included in that overload report.\n\n4.2.2.  Reacting Node Behavior\n\n   When a reacting node sends a request it MUST determine if that\n   request matches an active OCS.\n\n   If the request matches and active OCS then the reacting number MUST\n   apply abatement treatment on the request.  The abatement treatment\n   applied depends on the the abatement algorithm stored in the OCS.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 17]\n_\nInternet-Draft                
     DOIC                      October 2014\n\n\n   For the Loss abatement algorithm defined in this specification, see\n   Section 5 for the abatement logic applied.\n\n   If the abatement treatment results in throttling of the request and\n   if the reacting node is an agent then the agent MUST send an\n   appropriate error as defined in section Section 7.\n\n   In the case that the OCS entry validity duration expires or has a\n   validity duration of zero ("0"), meaning that it the reporting node\n   has explicitly signaled the end of the overload condition then\n   abatement associated with the overload abatement MUST be ended in a\n   controlled fashion.\n\n4.2.3.  Reporting Node Behavior\n\n   The operation on the reporting node is straight forward.\n\n   If there is an active OCS entry then the reporting node SHOULD\n   include the OC-OLR AVP in all answer messages to requests that\n   contain the OC-Supported-Features AVP and that match the active OCS\n   entry.\n\n      A re
 quest matches if the application-id in the request matches the\n      application-id in any active OCS entry and if the report-type in\n      the OCS entry matches a report-type supported by the reporting\n      node as indicated in the OC-Supported-Features AVP.\n\n   The contents of the OC-OLR AVP MUST contain all information necessary\n   for the abatement algorithm indicated in the OC-Supported-Features\n   message that is also included in the answer message.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n      Note - In some cases (e.g. when there are one or more agents in\n      the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   A reporting node MUST NOT send overload r
 eports of a type that has\n   not been advertized as supported by the reacting node.\n\n      Note that a reacting node advertises support for the host and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by new feature bits in the OC-Feature-Vector AVP.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reac
 ting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to which the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n   be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requ
 ests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n   This document assumes that there is a single source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n      Editor\'s Note: There i
 s not yet consensus on the above two\n      paragraphs.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extention MAY define new AVPs for use in DOIC Capability\n   Anouncement and for use in DOIC Overload reporting.  These new AVP\n   SHOULD be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be und
 erstood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corresponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature in the OC-Feature-Vector AVP.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy DOIC implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value.  If\n   the new sub-AVPs imply new semantics for handling the indicated\n   report type, then a new OC-Report-Type AVP value MUST be defined.\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) M
 UST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used b
 y reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.  In this discussion assume that the reacting\n   node is also the sending node.\n\n   1.  An overload report is received and the associated overload state\n       is saved by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request.\n\n   4.  The reacting node determines if abatement should be applied to\n       the reque
 st.  One approach that could be taken for each request\n       is to select a random number between 1 and 100.  If the random\n       number is less than the indicated reduction percentage then the\n       request is given abatement treatment, otherwise the request is\n       given normal routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 21]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node MUST indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The 
 reporting node MAY change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node SHOULD send an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node MUST apply abatement treatment to the requested\n   percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolu
 te reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   When applying overload abatement treatment for the load abatement\n   algorithm, the reacting node MUST abate, either by throttling or\n   diversion, the requested percentage of requests that would have\n   otherwise been sent to the reporting host or realm.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n\n\n\n\n\nKorho
 nen, et al.         Expires April 25, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the reacting node does not receive an OLR in messages sent to the\n   formally overloaded node then the reacting node SHOULD slowly\n   increase the rate of traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\
 n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandatory to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included
  in every Diameter message a DOIC\n   supporting node sends.\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                                [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\
 n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Grouped and contains the\n   information necessary to convey an overload report.  The OC-OLR AVP\n   does not explicitly contain all information needed by the reacting\n   node to decide whether a subsequent request must undergo a throttling\n   process with the received reduction percentage.  The value of the OC-\n   Report-Type AVP within the OC-OLR AVP indicates which implicit\n   information is relevant for this decision (see Section 6.6).  The\n   application the OC-OLR AVP applies to is the same as the Application-\n   Id found in the Diameter message header.  The host or realm the OC-\n   OLR AVP concerns is determined from the Origin-Host AVP and/or\n   Origin-Realm AVP found i
 n the encapsulating Diameter command.  The\n   OC-OLR AVP is intended to be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Percentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded and the event SHOULD\n   be logged.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Numbe
 r AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence numbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for 
 the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid duration values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about 
 to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n   A reacting node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n    
   not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The
  value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be useful for situations\n   where a reacting node needs to apply different overload treatments\n   for different "types" of overload.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to w
 hat it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n              
                                            _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST_\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         T
 BD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility is
 sues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node MUST select an appropriate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is use
 d when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this s
 pecification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Authorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect 
 this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status of a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) c
 onnection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report
 .\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to apply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an ov
 erload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from an peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015               
  [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes them a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be
  allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests, and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes. 
  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement 
 to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n
    security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scope of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and
  H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              L
 oughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only mean
 s for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  Requirements Conformance Analysis\n\n   This section contains the result of an analysis of the DOIC solutions\n   conformance to the requirements defined in [RFC7068].\n\n   To be completed.\n\nA.4.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from th
 e error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is refered to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 34
 ]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the DOIC\n             Solution\n\n   THis section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   requests.  This discussion is meant to document factors that play\n   into decisions made by the Diameter identity responsible for handling\n   overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is 
 used to tie\n   multiple requests into a single session.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single Diameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], --_ where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other sessio
 n-related information in the Diameter requests\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 35]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   repo
 rted overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded
  Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For pseudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 36]\n_\nInternet-Draft            
         DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      consideration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up proc
 edures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   Session-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      
 Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-session requests.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implicat
 ions\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overl
 oad\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application specific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for 
 pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      requests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two classes of intra-sessions requests.  The first class\n      consists of requests that terminate a session.  The second class\n      comprises requests that are used by the Diameter client and server\n      to maintain the ongoing session state.  Implementors and operators\n      may choose to throttle session-terminating requests less\n      aggressively in order to gracefully terminate sessions, allow\n      clean-up of the related resources (e.g. session state) and avoid\n      the need for additional intra-session requests.  Favoring session-\n      termination requests may reduce the session management impact on\n      the overlo
 aded entity.  The default handling of other intra-\n      session requests might be to treat them equally when making\n      throttling decisions.  There might also be application level\n      considerations whether some request types are favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland\n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Pho
 ne: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 40]\n', 'filename1': '\n\n\n\nDiameter Maintenance and Extensions (DIME)              J. Korhonen, Ed.\nInternet-Draft                                                  Broadcom\nIntended status: Standards Track                         S. Donovan, Ed.\nExpires: April 25, 2015                                      B. Campbell\n                                                                  Oracle\n                                                               L. Morand\n                                                             Orange Labs\n                                                        October 22, 2014\n\n\n                Diameter Overload Indication Conveyance\n                      draft-ietf-dime-ovli-04.txt\n\nAbstract\n\n   This specification documents a Diameter Overload Contro
 l (DOC) base\n   solution and the dissemination of the overload report information.\n\nRequirements\n\n   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",\n   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this\n   document are to be interpreted as described in RFC 2119 [RFC2119].\n\nStatus of This Memo\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at http://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as "work in progress.
 "\n\n   This Internet-Draft will expire on April 25, 2015.\n\nCopyright Notice\n\n   Copyright (c) 2014 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust\'s Legal\n   Provisions Relating to IETF Documents\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 1]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (http://trustee.ietf.org/license-info) in effect on the date of\n   publication of this document.  Please review these documents\n   carefully, as they describe your rights and restrictions with respect\n   to this document.  Code Components extracted from this document must\n   include Simplified BSD License text as described in Section 4.e of\n   the Trust Legal Provisions and are provided without warranty as\n   described in the Simplified BSD License.\n\nTable of Contents\n\n   1.  Introduction  . . . . . . . . . . . .
  . . . . . . . . . . . .   3\n   2.  Terminology and Abbreviations . . . . . . . . . . . . . . . .   3\n   3.  Solution Overview . . . . . . . . . . . . . . . . . . . . . .   5\n     3.1.  Piggybacking Principle  . . . . . . . . . . . . . . . . .   7\n     3.2.  DOIC Capability Announcement  . . . . . . . . . . . . . .   8\n     3.3.  DOIC Overload Condition Reporting . . . . . . . . . . . .   9\n     3.4.  DOIC Extensibility  . . . . . . . . . . . . . . . . . . .  10\n     3.5.  Simplified Example Architecture . . . . . . . . . . . . .  11\n   4.  Solution Procedures . . . . . . . . . . . . . . . . . . . . .  12\n     4.1.  Capability Announcement . . . . . . . . . . . . . . . . .  12\n       4.1.1.  Reacting Node Behavior  . . . . . . . . . . . . . . .  12\n       4.1.2.  Reporting Node Behavior . . . . . . . . . . . . . . .  12\n       4.1.3.  Agent Behavior  . . . . . . . . . . . . . . . . . . .  13\n     4.2.  Overload Report Processing  . . . . . . . . . . . . . . .  14\n     
   4.2.1.  Overload Control State  . . . . . . . . . . . . . . .  14\n       4.2.2.  Reacting Node Behavior  . . . . . . . . . . . . . . .  18\n       4.2.3.  Reporting Node Behavior . . . . . . . . . . . . . . .  18\n     4.3.  Protocol Extensibility  . . . . . . . . . . . . . . . . .  20\n   5.  Loss Algorithm  . . . . . . . . . . . . . . . . . . . . . . .  21\n     5.1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . .  21\n     5.2.  Reporting Node Behavior . . . . . . . . . . . . . . . . .  22\n     5.3.  Reacting Node Behavior  . . . . . . . . . . . . . . . . .  22\n   6.  Attribute Value Pairs . . . . . . . . . . . . . . . . . . . .  23\n     6.1.  OC-Supported-Features AVP . . . . . . . . . . . . . . . .  23\n     6.2.  OC-Feature-Vector AVP . . . . . . . . . . . . . . . . . .  24\n     6.3.  OC-OLR AVP  . . . . . . . . . . . . . . . . . . . . . . .  24\n     6.4.  OC-Sequence-Number AVP  . . . . . . . . . . . . . . . . .  25\n     6.5.  OC-Validity-Duration AVP  . .
  . . . . . . . . . . . . . .  25\n     6.6.  OC-Report-Type AVP  . . . . . . . . . . . . . . . . . . .  26\n     6.7.  OC-Reduction-Percentage AVP . . . . . . . . . . . . . . .  27\n     6.8.  Attribute Value Pair flag rules . . . . . . . . . . . . .  27\n   7.  Error Response Codes  . . . . . . . . . . . . . . . . . . . .  28\n   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28\n     8.1.  AVP codes . . . . . . . . . . . . . . . . . . . . . . . .  29\n     8.2.  New registries  . . . . . . . . . . . . . . . . . . . . .  29\n   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  29\n     9.1.  Potential Threat Modes  . . . . . . . . . . . . . . . . .  29\n     9.2.  Denial of Service Attacks . . . . . . . . . . . . . . . .  31\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 2]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n     9.3.  Non-Compliant Nodes . . . . . . . . . . . . . . . .
  . . .  31\n     9.4.  End-to End-Security Issues  . . . . . . . . . . . . . . .  31\n   10. Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  32\n   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  32\n     11.1.  Normative References . . . . . . . . . . . . . . . . . .  33\n     11.2.  Informative References . . . . . . . . . . . . . . . . .  33\n   Appendix A.  Issues left for future specifications  . . . . . . .  33\n     A.1.  Additional traffic abatement algorithms . . . . . . . . .  34\n     A.2.  Agent Overload  . . . . . . . . . . . . . . . . . . . . .  34\n     A.3.  Requirements Conformance Analysis . . . . . . . . . . . .  34\n     A.4.  DIAMETER_TOO_BUSY clarifications  . . . . . . . . . . . .  34\n   Appendix B.  Deployment Considerations  . . . . . . . . . . . . .  34\n   Appendix C.  Considerations for Applications Integrating the DOIC\n                Solution . . . . . . . . . . . . . . . . . . . . . .  35\n     C.1.  Application Clas
 sification  . . . . . . . . . . . . . . .  35\n     C.2.  Application Type Overload Implications  . . . . . . . . .  36\n     C.3.  Request Transaction Classification  . . . . . . . . . . .  37\n     C.4.  Request Type Overload Implications  . . . . . . . . . . .  38\n   Authors\' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39\n\n1.  Introduction\n\n   This specification defines a base solution for Diameter Overload\n   Control (DOC), referred to as Diameter Overload Indication Conveyance\n   (DOIC).  The requirements for the solution are described and\n   discussed in the corresponding design requirements document\n   [RFC7068].  Note that the overload control solution defined in this\n   specification does not address all the requirements listed in\n   [RFC7068].  A number of overload control related features are left\n   for the future specifications.  See Appendix A for a list of\n   extensions that are currently being considered.  See Appendix A.3 for\n   an analy
 sis of the conformance to the requirements specified in\n   [RFC7068].\n\n   The solution defined in this specification addresses Diameter\n   overload control between Diameter nodes that support the DOIC\n   solution.  Furthermore, the solution which is designed to apply to\n   existing and future Diameter applications, requires no changes to the\n   Diameter base protocol [RFC6733] and is deployable in environments\n   where some Diameter nodes do not implement the Diameter overload\n   control solution defined in this specification.\n\n2.  Terminology and Abbreviations\n\n   Abatement\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 3]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Reaction to receipt of an overload report resulting in a reduction\n      in traffic sent to the reporting node.  Abatement actions include\n      diversion and throttling.\n\n   Abatement Algorithm\n\n      An mechanism request
 ed by reporting nodes and used by reacting\n      nodes to reduce the amount of traffic sent during an occurrence of\n      overload control.\n\n   Diversion\n\n      Abatement of traffic sent to a reporting node by a reacting node\n      in response to receipt of an overload report.  The abatement is\n      achieved by diverting traffic from the reporting node to another\n      Diameter node that is able to process the request.\n\n   Host-Routed Request\n\n      The set of requests that a reacting node knows will be served by a\n      particular host, either due to the presence of a Destination-Host\n      AVP, or by some other local knowledge on the part of the reacting\n      node.\n\n   Overload Control State (OCS)\n\n      Reporting and reacting node internally maintained state describing\n      occurrences of overload control.\n\n   Overload Report (OLR)\n\n      Information sent by a reporting node indicating the start or\n      continuation of an occurrence of overload contr
 ol.\n\n   Reacting Node\n\n      A Diameter node that acts upon an overload report.\n\n   Realm-Routed Request\n\n      The set of requests that a reacting node does not know the host\n      that will service the request.\n\n   Reporting Node\n\n      A Diameter node that generates an overload report.  (This may or\n      may not be the overloaded node.)\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 4]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Throttling\n\n      Throttling is the reduction of the number of requests sent to an\n      entity.  Throttling can include a Diameter Client or Diameter\n      Server dropping requests, or a Diameter Agent rejecting requests\n      with appropriate error responses.  In extreme cases reporting\n      nodes can also throttle requests when the requested reductions in\n      traffic does not sufficiently address the overload scenario.\n\n\n\n3.  Solution Overview\n\n   Th
 e Diameter Overload Information Conveyance (DOIC) solution allows\n   Diameter nodes to request other nodes to perform overload abatement\n   actions, that is, actions to reduce the load offered to the\n   overloaded node or realm.\n\n   A Diameter node that supports DOIC is known as a "DOIC node".  Any\n   Diameter node can act as a DOIC node, including clients, servers, and\n   agents.  DOIC nodes are further divided into "Reporting Nodes" and\n   "Reacting Nodes."  A reporting node requests overload abatement by\n   sending an Overload Report (OLR) to one or more reacting nodes.\n\n   A reacting node acts upon OLRs, and performs whatever actions are\n   needed to fulfil the abatement requests included in the OLRs.  A\n   Reporting node may report overload on its own behalf, or on behalf of\n   other (typically upstream) nodes.  Likewise, a reacting node may\n   perform overload abatement on its own behalf, or on behalf of other\n   (typically downstream) nodes.\n\n   A node\'s ro
 le as a DOIC node is independent of its Diameter role.\n   For example, Diameter Relay and Proxy Agents may act as DOIC nodes,\n   even though they are not endpoints in the Diameter sense.  Since\n   Diameter enables bi-directional applications, where Diameter Servers\n   can send requests towards Diameter Clients, a given Diameter node can\n   simultaneously act as a reporting node and a reacting node.\n\n   Likewise, a relay or proxy agent may act as a reacting node from the\n   perspective of upstream nodes, and a reporting node from the\n   perspective of downstream nodes.\n\n   DOIC nodes do not generate new messages to carry DOIC related\n   information.  Rather, they "piggyback" DOIC information over existing\n   Diameter messages by inserting new AVPs into existing Diameter\n   requests and responses.  Nodes indicate support for DOIC, and any\n   needed DOIC parameters by inserting an OC_Supported_Features AVP\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015         
         [Page 5]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   (Section 6.2) into existing requests and responses.  Reporting nodes\n   send OLRs by inserting OC-OLR AVPs (Section 6.3).\n\n   A given OLR applies to the Diameter realm and application of the\n   Diameter message that carries it.  If a reporting node supports more\n   than one realm and/or application, it reports independently for each\n   combination of realm and application.  Similarly, the OC-Supported-\n   Features AVP applies to the realm and application of the enclosing\n   message.  This implies that a node may support DOIC for one\n   application and/or realm, but not another, and may indicate different\n   DOIC parameters for each application and realm for which it supports\n   DOIC.\n\n   Reacting nodes perform overload abatement according to an agreed-upon\n   abatement algorithm.  An abatement algorithm defines the meaning of\n   the parameters of an OLR and the proced
 ures required for overload\n   abatement.  This document specifies a single must-support algorithm,\n   namely the "loss" algorithm (Section 5).  Future specifications may\n   introduce new algorithms.\n\n   Overload conditions may vary in scope.  For example, a single\n   Diameter node may be overloaded, in which case reacting nodes may\n   reasonably attempt to send requests to other destinations or via\n   other agents.  On the other hand, an entire Diameter realm may be\n   overloaded, in which case such attempts would do harm.  DOIC OLRs\n   have a concept of "report type" (Section 6.6), where the type defines\n   such behaviors.  Report types are extensible.  This document defines\n   report types for overload of a specific server, and for overload of\n   an entire realm.\n\n   A report of type host is sent to indicate the overload of a specific\n   server for the application-id indicated in the transaction.  When\n   receiving an OLR of type host, a reacting node applies over
 load\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   A report type of realm is sent to indicate the overload of all\n   servers in a realm for the application-id.  When receiving an OLR of\n   type realm, a reacting node applies overload abatement to what is\n   referred to in this document as realm-routed requests.  This is the\n   set of requests that are not host-routed as defined in the previous\n   paragraph.\n\n\n\nKorhonen, et al.         Expires April 25, 2015      
            [Page 6]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   While a reporting node sends OLRs to "adjacent" reacting nodes, nodes\n   that are "adjacent" for DOIC purposes may not be adjacent from a\n   Diameter, or transport, perspective.  For example, one or more\n   Diameter agents that do not support DOIC may exist between a given\n   pair of reporting and reacting nodes, as long as those agents pass\n   unknown AVPs through unchanged.  The report types described in this\n   document can safely pass through non-supporting agents.  This may not\n   be true for report types defined in future specifications.  Documents\n   that introduce new report types MUST describe any limitations on\n   their use across non-supporting agents.\n\n3.1.  Piggybacking Principle\n\n   The overload control AVPs defined in this specification have been\n   designed to be piggybacked on top of existing application messages.\n   This is made possible by adding
  overload control top-level AVPs, the\n   OC-OLR AVP and the OC-Supported-Features AVP, as optional AVPs into\n   existing commands when the corresponding Command Code Format (CCF)\n   specification allows adding new optional AVPs (see Section 1.3.4 of\n   [RFC6733]).\n\n   Reacting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all request messages originated or relayed\n   by the reacting node.\n\n   Reporting nodes indicate support for DOIC by including the OC-\n   Supported-Features AVP in all answer messages originated or relayed\n   by the reporting node.  Reporting nodes also include overload reports\n   using the OC-OLR AVP in answer messages.\n\n      Note: There is no new Diameter application defined to carry\n      overload related AVPs.  The DOIC AVPs are carried in existing\n      Diameter application messages.\n\n   Note that the overload control solution does not have fixed server\n   and client roles.  The DOIC node role is determi
 ned based on the\n   message type: whether the message is a request (i.e. sent by a\n   "reacting node") or an answer (i.e. send by a "reporting node").\n   Therefore, in a typical "client-server" deployment, the Diameter\n   Client MAY report its overload condition to the Diameter Server for\n   any Diameter Server initiated message exchange.  An example of such\n   is the Diameter Server requesting a re-authentication from a Diameter\n   Client.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 7]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n3.2.  DOIC Capability Announcement\n\n   The DOIC solution supports the ability for Diameter nodes to\n   determine if other nodes in the path of a request support the\n   solution.  This capability is referred to as DOIC Capability\n   Announcement (DCA) and is separate from Diameter Capability Exchange.\n\n   The DCA solution uses the OC-Supported-Features AVPs to indi
 cate the\n   Diameter overload features supported.\n\n   The first node in the path of a Diameter request that supports the\n   DOIC solution inserts the OC-Supported-Feature AVP in the request\n   message.  This includes an indication that it supports the loss\n   overload abatement algorithm defined in this specification (see\n   Section 5).  This insures that there is at least one commonly\n   supported overload abatement algorithm between the reporting node and\n   the reacting nodes in the path of the request.\n\n      DOIC must support deployments where Diameter Clients and/or\n      Diameter Servers do not support the DOIC solution.  In this\n      scenario, it is assumed that Diameter Agents that support the DOIC\n      solution will handle overload abatement for the non supporting\n      Diameter nodes.  In this case the DOIC agent will insert the OC-\n      Supporting-Features AVP in requests that do not already contain\n      one, telling the reporting node that there is 
 a DOIC node that\n      will handle overload abatement.\n\n   The reporting node inserts the OC-Supported-Feature AVP in all answer\n   messages to requests that contained the OC-Supported-Feature AVP.\n   The contents of the reporting node\'s OC-Supported-Feature AVP\n   indicate the set of Diameter overload features supported by the\n   reporting node with one exception.\n\n   The reporting node only includes an indication of support for one\n   overload abatement algorithm.  This is the algorithm that the\n   reporting node intends to use should it enter an overload condition\n   or requests to use while it actually is in an overload condition.\n   Reacting nodes can use the indicated overload abatement algorithm to\n   prepare for possible overload reports and must use the indicated\n   overload abatement algorithm if traffic reduction is actually\n   requested.\n\n      Note that the loss algorithm defined in this document is a\n      stateless abatement algorithm.  As a result
  it does not require\n      any actions by reacting nodes prior to the receipt of an overload\n      report.  Stateful abatement algorithms that base the abatement\n      logic on a history of request messages sent might require reacting\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 8]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      nodes to maintain state to insure that overload reports can be\n      properly handled.\n\n   The individual features supported by the DOIC nodes are indicated in\n   the OC-Feature-Vector AVP.  Any semantics associated with the\n   features will be defined in extension specifications that introduce\n   the features.\n\n   The DCA mechanism must also support the scenario where the set of\n   features supported by the sender of a request and by agents in the\n   path of a request differ.  In this case, the agent updates the OC-\n   Supported-Feature AVP to reflect the mixture of the 
 two sets of\n   supported features.\n\n      The logic to determine the content of the modified OC-Supported-\n      Feature AVP is out-of-scope for this specification and is left to\n      implementation decisions.  Care must be taken not to introduce\n      interoperability issues for downstream or upstream DOIC nodes.\n\n3.3.  DOIC Overload Condition Reporting\n\n   As with DOIC Capability Announcement, Overload Condition Reporting\n   uses new AVPs (Section 6.3) to indicate an overload condition.\n\n   The OC-OLR AVP is referred to as an overload report.  The OC-OLR AVP\n   includes the type of report, a sequence number, the length of time\n   that the report is valid and abatement algorithm specific AVPs.\n\n   Two types of overload reports are defined in this document, host\n   reports and realm reports.\n\n   A report of type host is sent to indicate the overload of a specific\n   Diameter node for the application-id indicated in the transaction.\n   When receiving an OLR of 
 type host, a reacting node applies overload\n   abatement to what is referred to in this document as host-routed\n   requests.  This is the set of requests that the reacting node knows\n   will be served by a particular host, either due to the presence of a\n   Destination-Host AVP, or by some other local knowledge on the part of\n   the reacting node.  The reacting node applies overload abatement on\n   those host-routed requests which the reacting node knows will be\n   served by the server that matches the Origin-Host AVP of the received\n   message that contained the received OLR of type host.\n\n   Realm reports apply to realm-routed requests for a specific realm as\n   indicated in the Destination-Realm AVP.\n\n   Reporting nodes are responsible for determining the need for a\n   reduction of traffic.  The method for making this determination is\n\n\n\nKorhonen, et al.         Expires April 25, 2015                 [Page 9]\n_\nInternet-Draft                    DOIC           
            October 2014\n\n\n   implementation specific and depend on the type of overload report\n   being generated.  A host report, for instance, will generally be\n   generated by tracking utilization of resources required by the host\n   to handle transactions for the Diameter application.  A realm report\n   will generally impact the traffic sent to multiple hosts and, as\n   such, will typically require tracking the capacity of the servers\n   able to handle realm-routed requests for the application.\n\n   Once a reporting node determines the need for a reduction in traffic,\n   it uses the DOIC defined AVPs to report on the condition.  These AVPs\n   are included in answer messages sent or relayed by the reporting\n   node.  The reporting node indicates the overload abatement algorithm\n   that is to be used to handle the traffic reduction in the OC-\n   Supported-Features AVP.  The OC-OLR AVP is used to communicate\n   information about the requested reduction.\n\n   Reacti
 ng nodes, upon receipt of an overload report, are responsible\n   for applying the abatement algorithm to traffic impacted by the\n   overload report.  The method used for that abatement is dependent on\n   the abatement algorithm.  The loss abatement algorithm is defined in\n   this document (Section 5).  Other abatement algorithms can be defined\n   in extensions to the DOIC solutions.\n\n   As the conditions that lead to the generation of the overload report\n   change the reporting node can send new overload reports requesting\n   greater reduction if the condition gets worse or less reduction if\n   the condition improves.  The reporting node sends an overload report\n   with a duration of zero to indicate that the overload condition has\n   ended and use of the abatement algorithm is no longer needed.\n\n   The reacting node also determines when the overload report expires\n   based on the OC-Validity-Duration AVP in the overload report and\n   stops applying the abatement alg
 orithm when the report expires.\n\n3.4.  DOIC Extensibility\n\n   The DOIC solution is designed to be extensible.  This extensibility\n   is based on existing Diameter based extensibility mechanisms.\n\n   There are multiple categories of extensions that are expected.  This\n   includes the definition of new overload abatement algorithms, the\n   definition of new report types and new definitions of the scope of\n   messages impacted by an overload report.\n\n   The DOIC solution uses the OC-Supported-Features AVP for DOIC nodes\n   to communicate supported features.  The specific features supported\n   by the DOIC node are indicated in the OC-Feature-Vector AVP.  DOIC\n   extensions must define new values for the OC-Feature-Vector AVP.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 10]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   DOIC extensions also have the ability to add new AVPs to the OC-\n   Supported-Featur
 es AVP, if additional information about the new\n   feature is required.\n\n   Reporting nodes use the OC-OLR AVP to communicate overload\n   occurrances.  This AVP can also be extended to add new AVPs allowing\n   a reporting nodes to communicate additional information about\n   handling an overload condition.\n\n   If necessary, new extensions can also define new top-level AVPs.  It\n   is, however, recommended that DOIC extensions use the OC-Supported-\n   Features and OC-OLR to carry all DOIC related AVPs.\n\n3.5.  Simplified Example Architecture\n\n   Figure 1 illustrates the simplified architecture for Diameter\n   overload information conveyance.\n\n\n    Realm X                                  Same or other Realms\n   _--------------------------------------_ _----------------------_\n\n\n      +--^-----+                 : (optional) :\n      _Diameter_                 :            :\n      _Server A_--+     .--.     : +---^----+ :     .--.\n      +--------+  _   _(    _.   
 : _Diameter_ :   _(    _.   +---^----+\n                  +--(        )--:-_  Agent _-:--(        )--_Diameter_\n      +--------+  _ ( _  .  )  ) : +-----^--+ : ( _  .  )  ) _ Client _\n      _Diameter_--+  _--(___.-\'  :            :  _--(___.-\'  +-----^--+\n      _Server B_                 :            :\n      +---^----+                 :            :\n\n                          End-to-end Overload Indication\n             1)  _-----------------------------------------------_\n                             Diameter Application Y\n\n                  Overload Indication A    Overload Indication A\'\n             2)  _----------------------_ _----------------------_\n                 standard base protocol   standard base protocol\n\n\n\n     Figure 1: Simplified architecture choices for overload indication\n                                 delivery\n\n   In Figure 1, the Diameter overload indication can be conveyed (1)\n   end-to-end between servers and clients or (2) between ser
 vers and\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 11]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Diameter agent inside the realm and then between the Diameter agent\n   and the clients.\n\n4.  Solution Procedures\n\n   This section outlines the normative behavior associated with the DOIC\n   solution.\n\n4.1.  Capability Announcement\n\n   This section defines DOIC Capability Announcement (DCA) behavior.\n\n4.1.1.  Reacting Node Behavior\n\n   A reacting node MUST include the OC-Supported-Features AVP in all\n   request messages.\n\n   A reacting node MAY include the OC-Feature-Vector AVP with an\n   indication of the loss algorithm.  A reacting node MUST include the\n   OC-Feature-Vector AVP to indicate support for abatement algorithms in\n   addition to the loss algorithm.\n\n   A reacting node SHOULD indicate support for all other DOIC features\n   it supports.\n\n      Not all DOIC features will necessa
 rily apply to all transactions.\n      For instance, there may be a future extension that only applies to\n      session based applications.  A reacting node that supports this\n      extension can choose to not include it for non session based\n      applications.\n\n   An OC-Supported-Features AVP in answer messages indicates there is a\n   reporting node for the transaction.  The reacting node MAY take\n   action based on the features indicated in the OC-Feature-Vector AVP.\n\n      Note that the loss abatement algorithm is the only feature\n      described in this document and it does not require action to be\n      taken when there is an active overload report.  This behavior is\n      described in Section 4.2 and Section 5.\n\n4.1.2.  Reporting Node Behavior\n\n   Upon receipt of a request message, a reporting node determines if\n   there is a reacting node for the transaction based on the presence of\n   the OC-Supported-Features AVP.\n\n\n\n\n\n\nKorhonen, et al.         Exp
 ires April 25, 2015                [Page 12]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the request message contains an OC-Supported-Features AVP then the\n   reporting node MUST include the OC-Supported-Features AVP in the\n   answer message for that transaction.\n\n   The reporting node MUST NOT include the OC-Supported-Features AVP,\n   OC-OLR AVP or any other overload control AVPs defined in extension\n   drafts in response messages for transactions where the request\n   message does not include the OC-Supported-Features AVP.  Lack of the\n   OC-Supported-Features AVP in the request message indicates that there\n   is no reacting node for the transaction.\n\n   Based on the content of the OC-Supported-Features AVP in the request\n   message, the reporting node knows what overload control functionality\n   is supported by the reacting node.  The reporting node then acts\n   accordingly for the subsequent answer messages it initiates.\n
 \n   The reporting node MUST indicate support for one and only one\n   abatement algorithm in the OC-Feature-Vector AVP.  The abatement\n   algorithm included MUST be from the set of abatement algorithms\n   contained in the request message\'s OC-Supported-Features AVP.  The\n   abatement algorithm included MUST indicate the abatement algorithm\n   the reporting node wants the reacting node to use when the reporting\n   node enters an overload condition.\n\n   The reporting node MUST NOT change the selected algorithm during a\n   period of time that it is in an overload condition and, as a result,\n   is sending OC-OLR AVPs in answer messages.\n\n   The reporting node SHOULD indicate support for other DOIC features\n   defined in extension drafts that it supports and that apply to the\n   transaction.\n\n      Note that not all DOIC features will apply to all Diameter\n      applications or deployment scenarios.  The features included in\n      the OC-Feature-Vector AVP are based on
  local reporting node\n      policy.\n\n4.1.3.  Agent Behavior\n\n   Diameter agents that support DOIC MUST ensure that all messages have\n   the OC-Supporting-Features AVP.  If a message handled by the DOIC\n   agent does not include the OC-Supported-Features AVP then the DOIC\n   agent inserts the AVP.  If the message already has the AVP then the\n   agent either leaves it unchanged in the relayed message or modifies\n   it to reflect a mixed set of DOIC features.\n\n   An agent MAY modify the OC-Supported-Features AVP carried in answer\n   messages.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 13]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      For instance, if the agent supports a superset of the features\n      reported by the reacting node then the agent might choose, based\n      on local policy, to advertise that superset of features to the\n      reporting node.\n\n      If the agent modifies the OC-Supp
 orted-Features header sent to the\n      reporting node then it might also need to modify the OC-Supported-\n      Features AVP sent to a reacting node in the subsequent answer\n      message, as it cannot send an indication of support for features\n      that are not supported by the reacting node.\n\n4.2.  Overload Report Processing\n\n4.2.1.  Overload Control State\n\n   Both reacting and reporting nodes maintain Overload Control State\n   (OCS) for active overload conditions.\n\n4.2.1.1.  Overload Control State for Reacting Nodes\n\n   A reacting node SHOULD maintain the following OCS per supported\n   Diameter application:\n\n   o  A host-type OCS entry for each Destination-Host to which it sends\n      host-type requests and\n\n   o  A realm-type OCS entry for each Destination-Realm to which it\n      sends realm-type requests.\n\n   A host-type OCS entry MAY be identified by the pair of Application-Id\n   and Host-Id.\n\n   A realm-type OCS entry MAY be identified by the pair
  of Application-\n   Id and Realm-Id.\n\n   The host-type and realm-type OCS entries MAY include the following\n   information (the actual information stored is an implementation\n   decision):\n\n   o  Sequence number (as received in OC-OLR)\n\n   o  Time of expiry (derived from OC-Validity-Duration AVP received in\n      the OC-OLR AVP and time of reception of the message carrying OC-\n      OLR AVP)\n\n   o  Selected Abatement Algorithm (as received in OC-Supported-Features\n      AVP)\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 14]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   o  Abatement Algorithm specific input data (as received within the\n      OC-OLR AVP, for example, OC-Reduction-Percentage for the Loss\n      abatement algorithm)\n\n4.2.1.2.  Overload Control State for Reporting Nodes\n\n   A reporting node SHOULD maintain OCS entries per supported Diameter\n   application and per supported (and eve
 ntually selected) Abatement\n   Algorithm.\n\n   An OCS entry MAY be identified by the pair of Application-Id and\n   Abatement Algorithm.\n\n   The OCS entry for a given pair of Application and Abatement Algorithm\n   MAY include the information (the actual information stored is an\n   implementation decision):\n\n   o  Report type\n\n   o  Sequence number\n\n   o  Validity Duration\n\n   o  Expiration Time\n\n   o  Algorithm specific input data (for example, the Reduction\n      Percentage for the Loss Abatement Algorithm)\n\n4.2.1.3.  Reacting Node Maintainence of Overload Control State\n\n   When a reacting node receives an OC-OLR AVP, it MUST determine if it\n   is for an existing or new overload condition.\n\n      For the remainder of this section the term OLR referres to the\n      combination of the contents of the received OC-OLR AVP and the\n      abatement algorithm indicated in the received OC-Supported-\n      Features AVP.\n\n   The OLR is for an existing overload con
 dition if the reacting node\n   has an OCS that matches the received OLR.\n\n   For a host report-type this means it matches the app-id and host-id\n   in an existing host OCS entry.\n\n   For a realm report-type this means it matches the app-id and realm-id\n   in an existing realm OCS entry.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 15]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   If the OLR is for an existing overload condition then it MUST\n   determine if the OLR is a retransmission or an update to the existing\n   OLR.\n\n   If the sequence number for the received OLR is greater than the\n   sequence number stored in the matching OCS entry then the reacting\n   node MUST update the matching OCS entry.\n\n   If the sequence number for the received OLR is less than or equal to\n   the sequence number in the matching OCS entry then the reacting node\n   MUST silently ignore the received OLR.  The matchi
 ng OCS MUST NOT be\n   updated in this case.\n\n   If the received OLR is for a new overload condition then the reacting\n   node MUST generate a new OCS entry for the overload condition.\n\n   For a host report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and host-id of\n   the Origin-Host in the received message.\n\n   For a realm report-type this means it creates on OCS entry with the\n   app-id of the application-id in the received message and realm-id of\n   the Origin-Realm in the received message.\n\n   If the received OLR contains a validity duration of zero ("0") then\n   the reacting node MUST update the OCS entry as being expired.\n\n      Note that it is not necessarily appropriate to delete the OCS\n      entry, as there is recommended behavior that the reacting node\n      slowly returns to full traffic when ending an overload abatement\n      period.\n\n   The reacting node does not delete an OCS when receiv
 ing an answer\n   message that does not contain an OC-OLR AVP (i.e. absence of OLR\n   means "no change").\n\n4.2.1.4.  Reporting Node Maintainence of Overload Control State\n\n   A reporting node SHOULD create a new OCS entry when entering an\n   overload condition.\n\n      If the reporting node knows through absence of the OC-Supported-\n      Features AVP in received messages that there are no reacting nodes\n      supporting DOIC then the reporting node can choose to not create\n      OCS entries.\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 16]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   When generating a new OCS entry the sequence nubmer MAY be set to any\n   value if there is no unexpired overload report for previous overload\n   conditions at any reacting node.\n\n   When generating sequence numbers for new overload conditions, the new\n   sequence number MUST be greater than any sequence number i
 n an active\n   (unexpired) overload report previously sent by the reporting node.\n   This property MUST hold over a reboot of the reporting node.\n\n   The reporting node MUST update an OCS entry when it needs to adjust\n   the validity duration of the overload contition at reacting nodes.\n\n      For instance, if the reporting node wishes to instruct reacting\n      nodes to continue overload abatement for a longer period of time\n      that originally communicated.  This also applies if the reporting\n      node wishes to shorten the period of time that overload abatement\n      is to continue.\n\n   A reporting node MUST NOT update the abatement algorithm in an active\n   OCS entry.\n\n   A reporting node MUST update an OCS entry when it wishes to adjust\n   the any abatement algorithm specific parameters, including the\n   reduction percentage used for the Loss abatement algorithm.\n\n      For instance, if the reporting node wishes to change the reduction\n      percentage e
 ither higher, if the overload condition has worsened,\n      or lower, if the overload condition has improved, then the\n      reporting node would update the appropriate OCS entry.\n\n   The reporting node MUST update the sequence number associated with\n   the OCS entry anytime the contents of the OCS entry are changed.\n   This will result in a new sequence number being sent to reacting\n   nodes, instructing the reacting nodes to process the OC-OLR AVP.\n\n   A reporting node SHOULD update an OCS entry with a validity duration\n   of zero ("0") when the overload condition ends.\n\n      If the reporting node knows that the OCS entries in the reacting\n      nodes are near expiration then the reporting node can decide\n      delete the OCS entry.\n\n   The reporting node MUST keep an OCS entry with a validity duration of\n   zero ("0") for a period of time long enough to ensure that any\n   reacting node OCS entry created as a result of the overload condition\n   in the reporting
  node exists.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 17]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      This period of time can be determined by calculating the time the\n      last overload report for the overload condition was sent plus the\n      validity duration included in that overload report.\n\n4.2.2.  Reacting Node Behavior\n\n   When a reacting node sends a request it MUST determine if that\n   request matches an active OCS.\n\n   If the request matches and active OCS then the reacting number MUST\n   apply abatement treatment on the request.  The abatement treatment\n   applied depends on the abatement algorithm stored in the OCS.\n\n   For the Loss abatement algorithm defined in this specification, see\n   Section 5 for the abatement logic applied.\n\n   If the abatement treatment results in throttling of the request and\n   if the reacting node is an agent then the agent MUST send an\n   
 appropriate error as defined in section Section 7.\n\n   In the case that the OCS entry validity duration expires or has a\n   validity duration of zero ("0"), meaning that it the reporting node\n   has explicitly signaled the end of the overload condition then\n   abatement associated with the overload abatement MUST be ended in a\n   controlled fashion.\n\n4.2.3.  Reporting Node Behavior\n\n   The operation on the reporting node is straight forward.\n\n   If there is an active OCS entry then the reporting node SHOULD\n   include the OC-OLR AVP in all answer messages to requests that\n   contain the OC-Supported-Features AVP and that match the active OCS\n   entry.\n\n      A request matches if the application-id in the request matches the\n      application-id in any active OCS entry and if the report-type in\n      the OCS entry matches a report-type supported by the reporting\n      node as indicated in the OC-Supported-Features AVP.\n\n   The contents of the OC-OLR AVP MUST con
 tain all information necessary\n   for the abatement algorithm indicated in the OC-Supported-Features\n   message that is also included in the answer message.\n\n   A reporting node MAY choose to not resend an overload report to a\n   reacting node if it can guarantee that this overload report is\n   already active in the reacting node.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 18]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Note - In some cases (e.g. when there are one or more agents in\n      the path between reporting and reacting nodes, or when overload\n      reports are discarded by reacting nodes) the reporting node may\n      not be able to guarantee that the reacting node has received the\n      report.\n\n   A reporting node MUST NOT send overload reports of a type that has\n   not been advertized as supported by the reacting node.\n\n      Note that a reacting node advertises support for the h
 ost and\n      realm report types by including the OC-Supported-Features AVP in\n      the request.  Support for other report types must be explicitly\n      indicated by new feature bits in the OC-Feature-Vector AVP.\n\n   A reporting node MAY rely on the OC-Validity-Duration AVP values for\n   the implicit overload control state cleanup on the reacting node.\n   However, it is RECOMMENDED that the reporting node always explicitly\n   indicates the end of a overload condition.\n\n   The reporting node SHOULD indicate the end of an overload occurrence\n   by sending a new OLR with OC-Validity-Duration set to a value of zero\n   ("0").  The reporting node SHOULD insure that all reacting nodes\n   receive the updated overload report.\n\n      All OLRs sent have an expiration time calculated by adding the\n      validity-duration contained in the OLR to the time the message was\n      sent.  Transit time for the OLR can be safely ignored.  The\n      reporting node can ensure that all 
 reacting nodes have received\n      the OLR by continuing to send it in answer messages until the\n      expiration time for all OLRs sent for that overload contition have\n      expired.\n\n   When a reporting node sends an OLR, it effectively delegates any\n   necessary throttling to downstream nodes.  Therefore, the reporting\n   node SHOULD NOT apply throttling to the set of messages to which the\n   OLR applies.  That is, the same candidate set of messages SHOULD NOT\n   be throttled multiple times.\n\n   However, when the reporting node sends and OLR downstream, it MAY\n   still be responsible to apply other abatement methods, such as\n   diversion, or request throttling requests for other reasons.  For\n   example, an agent or server might have a configured rate limit for\n   each client, and throttle requests that exceed that limit, even if\n   such requests had already been candidates for throttling by\n   downstream nodes.\n\n   This document assumes that there is a single
  source for realm-reports\n   for a given realm, or that if multiple nodes can send realm reports,\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 19]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   that each such node has full knowledge of the overload state of the\n   entire realm.  A reacting node cannot distinguish between receiving\n   realm-reports from a single node, or from multiple nodes.\n\n   If multiple such nodes exist, they MUST ensure that realm-reports are\n   kept in sync.  This includes synchronizing the sequence numbers as\n   well as the reported overload state.  The method of doing so is up to\n   the implementation.  One way to keep the sequence numbers in sync is\n   to generate the sequence numbers based on system time.\n\n      Editor\'s Note: There is not yet consensus on the above two\n      paragraphs.\n\n4.3.  Protocol Extensibility\n\n   The overload control solution can be extended, e.g. 
 with new traffic\n   abatement algorithms, new report types or other new functionality.\n\n   When defining a new extension a new feature bit MUST be defined for\n   the OC-Feature-Vector.  This feature bit is used to communicate\n   support for the new feature.\n\n   The extension MAY define new AVPs for use in DOIC Capability\n   Announcement and for use in DOIC Overload reporting.  These new AVP\n   SHOULD be defined to be extensions to the OC-Supported-Features and\n   OC-OLR AVPs defined in this document.\n\n   It should be noted that [RFC6733] defined Grouped AVP extension\n   mechanisms apply.  This allows, for example, defining a new feature\n   that is mandatory to be understood even when piggybacked on an\n   existing applications.\n\n   The handling of feature bits in the OC-Feature-Vector AVP that are\n   not associated with overload abatement algorithms MUST be specified\n   by the extensions that define the features.\n\n   When defining new report type values, the corr
 esponding specification\n   MUST define the semantics of the new report types and how they affect\n   the OC-OLR AVP handling.  The specification MUST also reserve a\n   corresponding new feature bit in the OC-Feature-Vector AVP.\n\n   The OC-OLR AVP can be expanded with optional sub-AVPs only if a\n   legacy DOIC implementation can safely ignore them without breaking\n   backward compatibility for the given OC-Report-Type AVP value.  If\n   the new sub-AVPs imply new semantics for handling the indicated\n   report type, then a new OC-Report-Type AVP value MUST be defined.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 20]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   New features (feature bits in the OC-Feature-Vector AVP) and report\n   types (in the OC-Report-Type AVP) MUST be registered with IANA.  As\n   with any Diameter specification, new AVPs MUST also be registered\n   with IANA.  See Section 8 for the 
 required procedures.\n\n5.  Loss Algorithm\n\n   This section documents the Diameter overload loss abatement\n   algorithm.\n\n5.1.  Overview\n\n   The DOIC specification supports the ability for multiple overload\n   abatement algorithms to be specified.  The abatement algorithm used\n   for any instance of overload is determined by the Diameter Overload\n   Capability Announcement process documented in Section 4.1.\n\n   The loss algorithm described in this section is the default algorithm\n   that must be supported by all Diameter nodes that support DOIC.\n\n   The loss algorithm is designed to be a straightforward and stateless\n   overload abatement algorithm.  It is used by reporting nodes to\n   request a percentage reduction in the amount of traffic sent.  The\n   traffic impacted by the requested reduction depends on the type of\n   overload report.\n\n   Reporting nodes use a strategy of applying abatement logic to the\n   requested percentage of request messages sent (or 
 handled in the case\n   of agents) by the reacting node that are impacted by the overload\n   report.\n\n   From a conceptual level, the logic at the reacting node could be\n   outlined as follows.\n\n   1.  An overload report is received and the associated overload state\n       is either saved or updated (if required) by the reacting node.\n\n   2.  A new Diameter request is generated by the application running on\n       the reacting node.\n\n   3.  The reacting node determines that an active overload report\n       applies to the request, as indicated by the corresponding OCS\n       entry.\n\n   4.  The reacting node determines if abatement should be applied to\n       the request.  One approach that could be taken for each request\n       is to select a random number between 1 and 100.  If the random\n       number is less than the indicated reduction percentage then the\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 21]\n_\nInternet-Draft         
            DOIC                      October 2014\n\n\n       request is given abatement treatment, otherwise the request is\n       given normal routing treatment.\n\n5.2.  Reporting Node Behavior\n\n   The method a reporting nodes uses to determine the amount of traffic\n   reduction required to address an overload condition is an\n   implementation decision.\n\n   When a reporting node that has selected the loss abatement algorithm\n   determines the need to request a traffic reduction it includes an OC-\n   OLR AVP in response messages as described in Section 4.2.3.\n\n   The reporting node MUST indicate a percentage reduction in the OC-\n   Reduction-Percentage AVP.\n\n   The reporting node MAY change the reduction percentage in subsequent\n   overload reports.  When doing so the reporting node must conform to\n   overload report handing specified in Section 4.2.3.\n\n   When the reporting node determines it no longer needs a reduction in\n   traffic the reporting node SHOULD s
 end an overload report indicating\n   the overload report is no longer valid, as specified in\n   Section 4.2.3.\n\n5.3.  Reacting Node Behavior\n\n   The method a reacting node uses to determine which request messages\n   are given abatement treatment is an implementation decision.\n\n   When receiving an OC-OLR in an answer message where the algorithm\n   indicated in the OC-Supported-Features AVP is the loss algorithm, the\n   reacting node MUST apply abatement treatment to the requested\n   percentage of request messages sent.\n\n      Note: the loss algorithm is a stateless algorithm.  As a result,\n      the reacting node does not guarantee that there will be an\n      absolute reduction in traffic sent.  Rather, it guarantees that\n      the requested percentage of new requests will be given abatement\n      treatment.\n\n   When applying overload abatement treatment for the load abatement\n   algorithm, the reacting node MUST abate, either by throttling or\n   diversion, the
  requested percentage of requests that would have\n   otherwise been sent to the reporting host or realm.\n\n   If reacting node comes out of the 100 percent traffic reduction as a\n   result of the overload report timing out, the following concerns are\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 22]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   RECOMMENDED to be applied.  The reacting node sending the traffic\n   should be conservative and, for example, first send "probe" messages\n   to learn the overload condition of the overloaded node before\n   converging to any traffic amount/rate decided by the sender.  Similar\n   concerns apply in all cases when the overload report times out unless\n   the previous overload report stated 0 percent reduction.\n\n   If the reacting node does not receive an OLR in messages sent to the\n   formerly overloaded node then the reacting node SHOULD slowly\n   increase the rate o
 f traffic sent to the overloaded node.\n\n   It is suggested that the reacting node decrease the amount of traffic\n   given abatement treatment by 20_ each second until the reduction is\n   completely removed and no traffic is given abatement treatment.\n\n      The goal of this behavior is to reduce the probability of overload\n      condition thrashing where an immediate transition from 100_\n      reduction to 0_ reduction results in the reporting node moving\n      quickly back into an overload condition.\n\n6.  Attribute Value Pairs\n\n   This section describes the encoding and semantics of the Diameter\n   Overload Indication Attribute Value Pairs (AVPs) defined in this\n   document.\n\n   When added to existing commands, both OC-Feature-Vector and OC-OLR\n   AVPs SHOULD have the M-bit flag cleared to avoid backward\n   compatibility issues.\n\n   A new application specification can incorporate the overload control\n   mechanism specified in this document by making it mandato
 ry to\n   implement for the application and referencing this specification\n   normatively.  In such a case, the rules for handling of the M-bit\n   must follow the guidance in [RFC6733].  It is the responsibility of\n   the Diameter application designers to define how overload control\n   mechanisms works on that application.\n\n6.1.  OC-Supported-Features AVP\n\n   The OC-Supported-Features AVP (AVP code TBD1) is type of Grouped and\n   serves two purposes.  First, it announces a node\'s support for the\n   DOIC solution in general.  Second, it contains the description of the\n   supported DOIC features of the sending node.  The OC-Supported-\n   Features AVP MUST be included in every Diameter message a DOIC\n   supporting node sends.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 23]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      OC-Supported-Features ::= _ AVP Header: TBD1 _\n                              
   [ OC-Feature-Vector ]\n                              * [ AVP ]\n\n\n   The OC-Feature-Vector sub-AVP is used to announce the DOIC features\n   supported by the DOIC node, in the form of a flag bits field in which\n   each bit announces one feature or capability supported by the node\n   (see Section 6.2).  The absence of the OC-Feature-Vector AVP\n   indicates that only the default traffic abatement algorithm described\n   in this specification is supported.\n\n6.2.  OC-Feature-Vector AVP\n\n   The OC-Feature-Vector AVP (AVP code TBD6) is type of Unsigned64 and\n   contains a 64 bit flags field of announced capabilities of a DOIC\n   node.  The value of zero (0) is reserved.\n\n   The following capabilities are defined in this document:\n\n   OLR_DEFAULT_ALGO (0x0000000000000001)\n\n      When this flag is set by the DOIC node it means that the default\n      traffic abatement (loss) algorithm is supported.\n\n6.3.  OC-OLR AVP\n\n   The OC-OLR AVP (AVP code TBD2) is type of Groupe
 d and contains the\n   information necessary to convey an overload report on an overload\n   condition at the reporting node.  The OC-OLR AVP does not explicitly\n   contain all information needed by the reacting node to decide whether\n   a subsequent request must undergo a throttling process with the\n   received reduction percentage.  The value of the OC-Report-Type AVP\n   within the OC-OLR AVP indicates which implicit information is\n   relevant for this decision (see Section 6.6).  The application the\n   OC-OLR AVP applies to is the same as the Application-Id found in the\n   Diameter message header.  The host or realm the OC-OLR AVP concerns\n   is determined from the Origin-Host AVP and/or Origin-Realm AVP found\n   in the encapsulating Diameter command.  The OC-OLR AVP is intended to\n   be sent only by a reporting node.\n\n      OC-OLR ::= _ AVP Header: TBD2 _\n                 _ OC-Sequence-Number _\n                 _ OC-Report-Type _\n                 [ OC-Reduction-Pe
 rcentage ]\n                 [ OC-Validity-Duration ]\n               * [ AVP ]\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 24]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Note that if a Diameter command were to contain multiple OC-OLR AVPs\n   they all MUST have different OC-Report-Type AVP value.  OC-OLR AVPs\n   with unknown values SHOULD be silently discarded by reacting nodes\n   and the event SHOULD be logged.\n\n6.4.  OC-Sequence-Number AVP\n\n   The OC-Sequence-Number AVP (AVP code TBD3) is type of Unsigned64.\n   Its usage in the context of overload control is described in\n   Section 4.2.\n\n   From the functionality point of view, the OC-Sequence-Number AVP MUST\n   be used as a non-volatile increasing counter for a sequence of\n   overload reports between two DOIC nodes for the same overload\n   occurrence.  The sequence number is only required to be unique\n   between two DOIC nodes.  Sequence nu
 mbers are treated in a uni-\n   directional manner, i.e. two sequence numbers on each direction\n   between two DOIC nodes are not related or correlated.\n\n   When generating sequence numbers, the new sequence number MUST be\n   greater than any sequence number in an active, unexpired, overload\n   report previously sent by the reporting node.  This property MUST\n   hold over a reboot of the reporting node.\n\n6.5.  OC-Validity-Duration AVP\n\n   The OC-Validity-Duration AVP (AVP code TBD4) is type of Unsigned32\n   and indicates in seconds the validity time of the overload report.\n   The number of seconds is measured after reception of the first OC-OLR\n   AVP with a given value of OC-Sequence-Number AVP.  The default value\n   for the OC-Validity-Duration AVP is 5 (i.e., 5 seconds).  When the\n   OC-Validity-Duration AVP is not present in the OC-OLR AVP, the\n   default value applies.  Validity duration with values above 86400\n   (i.e.; 24 hours) MUST NOT be used.  Invalid dur
 ation values are\n   treated as if the OC-Validity-Duration AVP were not present and\n   result in the default value being used.\n\n   A timeout of the overload report has specific concerns that need to\n   be taken into account by the DOIC node acting on the earlier received\n   overload report(s).  Section 6.7 discusses the impacts of timeout in\n   the scope of the traffic abatement algorithms.\n\n   When a reporting node has recovered from overload, it SHOULD\n   invalidate any existing overload reports in a timely matter.  This\n   can be achieved by sending an updated overload report (meaning the\n   OLR contains a new sequence number) with the OC-Validity-Duration AVP\n   value set to zero ("0").  If the overload report is about to expire\n   naturally, the reporting node MAY choose to simply let it do so.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 25]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   A react
 ing node MUST invalidate and remove an overload report that\n   expires without an explicit overload report containing an OC-\n   Validity-Duration value set to zero ("0").\n\n6.6.  OC-Report-Type AVP\n\n   The OC-Report-Type AVP (AVP code TBD5) is type of Enumerated.  The\n   value of the AVP describes what the overload report concerns.  The\n   following values are initially defined:\n\n   0  A host report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      Either the Destination-Host AVP is present in the request and its\n      value matches the value of the Origin-Host AVP of the received\n      message that contained the OC-OLR AVP; or the Destination-Host is\n      not present in the request but the value of peer identity\n      associated with the connection used to send the request matches\n      the value of the Origin-Host AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value o
 f the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   1  A realm report.  The overload treatment should apply to requests\n      for which all of the following conditions are true:\n\n      The Destination-Host AVP is absent in the request.\n\n      The value of the Destination-Realm AVP in the request matches the\n      value of the Origin-Realm AVP of the received message that\n      contained the OC-OLR AVP.\n\n      The value of the Application-ID in the Diameter Header of the\n      request matches the value of the Application-ID of the Diameter\n      Header of the received message that contained the OC-OLR AVP.\n\n   The OC-Report-Type AVP is envisioned to be usefu
 l for situations\n   where a reacting node needs to apply different overload treatments\n   for different overload contexts.  For example, the reacting node(s)\n   might need to throttle differently requests sent to a specific server\n   (identified by the Destination-Host AVP in the request) and requests\n   that can be handled by any server in a realm.\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 26]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n6.7.  OC-Reduction-Percentage AVP\n\n   The OC-Reduction-Percentage AVP (AVP code TBD8) is type of Unsigned32\n   and describes the percentage of the traffic that the sender is\n   requested to reduce, compared to what it otherwise would send.  The\n   OC-Reduction-Percentage AVP applies to the default (loss) algorithm\n   specified in this specification.  However, the AVP can be reused for\n   future abatement algorithms, if its semantics fit into the new\n   algorithm.\n\
 n   The value of the Reduction-Percentage AVP is between zero (0) and one\n   hundred (100).  Values greater than 100 are ignored.  The value of\n   100 means that all traffic is to be throttled, i.e. the reporting\n   node is under a severe load and ceases to process any new messages.\n   The value of 0 means that the reporting node is in a stable state and\n   has no need for the reacting node to apply any traffic abatement.\n   The default value of the OC-Reduction-Percentage AVP is 0.  When the\n   OC-Reduction-Percentage AVP is not present in the overload report,\n   the default value applies.\n\n6.8.  Attribute Value Pair flag rules\n\n                                                         +---------+\n                                                         _AVP flag _\n                                                         _rules    _\n                                                         +----+----+\n                              AVP   Section              _    _MUST
 _\n       Attribute Name         Code  Defined  Value Type  _MUST_ NOT_\n      +--------------------------------------------------+----+----+\n      _OC-Supported-Features  TBD1  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-OLR                 TBD2  x.x      Grouped     _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Sequence-Number     TBD3  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Validity-Duration   TBD4  x.x      Unsigned32  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Report-Type         TBD5  x.x      Enumerated  _    _ V  _\n      +--------------------------------------------------+----+----+\n      _OC-Reduction                                      _    _    _\n      _  -Percentage          TBD8  x.x      Unsigned32  _    _ V  _\n      +-------
 -------------------------------------------+----+----+\n      _OC-Feature-Vector      TBD6  x.x      Unsigned64  _    _ V  _\n      +--------------------------------------------------+----+----+\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 27]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   As described in the Diameter base protocol [RFC6733], the M-bit\n   setting for a given AVP is relevant to an application and each\n   command within that application that includes the AVP.\n\n   The Diameter overload control AVPs SHOULD always be sent with the\n   M-bit cleared when used within existing Diameter applications to\n   avoid backward compatibility issues.  Otherwise, when reused in newly\n   defined Diameter applications, the DOC related AVPs SHOULD have the\n   M-bit set.\n\n7.  Error Response Codes\n\n   When a DOIC node rejects a Diameter request due to throttling, the\n   DOIC node MUST select an appropr
 iate error response code.  This\n   determination is made based on the probability of the request\n   succeeding if retried on a different path.\n\n   The DIAMETER_TOO_BUSY response code SHOULD be used when the request\n   is likely to succeed on a different path.\n\n      For instance, if the request arrived at the reporting node without\n      a Destination-Host AVP then the reporting node might determine\n      that there is an alternative Diameter node that could successfully\n      process the request and that retrying the transaction would not\n      negatively impact the reporting node.\n\n   The DIAMETER_UNABLE_TO_COMPLY response code SHOULD be used to\n   indicate that the request should not be retried.  This is used when\n   the request is not likely to succeed on a different path and retrying\n   would consume valuable resources during an occurance of overload.\n\n      For instance, if the request arrived at the reporting node with a\n      Destination-Host AVP populated
  with its own Diameter identity then\n      the reporting node can assume that retrying the request would\n      result in it coming to the same reporting node.\n\n      A second example is when an agent that supports the DOIC solution\n      is preforming the role of a reacting node for a non supporting\n      client.  Requests that are rejected as a result of DOIC throttling\n      in this scenario would generally be rejected with a\n      DIAMETER_UNABLE_TO_COMPLY response code.\n\n8.  IANA Considerations\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 28]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n8.1.  AVP codes\n\n   New AVPs defined by this specification are listed in Section 6.  All\n   AVP codes allocated from the \'Authentication, Authorization, and\n   Accounting (AAA) Parameters\' AVP Codes registry.\n\n8.2.  New registries\n\n   Three new registries are needed under the \'Authentication,\n   Au
 thorization, and Accounting (AAA) Parameters\' registry.\n\n   Section 6.2 defines a new "Overload Control Feature Vector" registry\n   including the initial assignments.  New values can be added into the\n   registry using the Specification Required policy [RFC5226].  See\n   Section 6.2 for the initial assignment in the registry.\n\n   Section 6.6 defines a new "Overload Report Type" registry with its\n   initial assignments.  New types can be added using the Specification\n   Required policy [RFC5226].\n\n9.  Security Considerations\n\n   This mechanism gives Diameter nodes the ability to request that\n   downstream nodes send fewer Diameter requests.  Nodes do this by\n   exchanging overload reports that directly affect this reduction.\n   This exchange is potentially subject to multiple methods of attack,\n   and has the potential to be used as a Denial-of-Service (DoS) attack\n   vector.\n\n   Overload reports may contain information about the topology and\n   current status o
 f a Diameter network.  This information is\n   potentially sensitive.  Network operators may wish to control\n   disclosure of overload reports to unauthorized parties to avoid its\n   use for competitive intelligence or to target attacks.\n\n   Diameter does not include features to provide end-to-end\n   authentication, integrity protection, or confidentiality.  This may\n   cause complications when sending overload reports between non-\n   adjacent nodes.\n\n9.1.  Potential Threat Modes\n\n   The Diameter protocol involves transactions in the form of requests\n   and answers exchanged between clients and servers.  These clients and\n   servers may be peers, that is,they may share a direct transport (e.g.\n   TCP or SCTP) connection, or the messages may traverse one or more\n   intermediaries, known as Diameter Agents.  Diameter nodes use TLS,\n   DTLS, or IPSec to authenticate peers, and to provide confidentiality\n\n\n\nKorhonen, et al.         Expires April 25, 2015             
    [Page 29]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   and integrity protection of traffic between peers.  Nodes can make\n   authorization decisions based on the peer identities authenticated at\n   the transport layer.\n\n   When agents are involved, this presents an effectively hop-by-hop\n   trust model.  That is, a Diameter client or server can authorize an\n   agent for certain actions, but it must trust that agent to make\n   appropriate authorization decisions about its peers, and so on.\n\n   Since confidentiality and integrity protection occurs at the\n   transport layer.  Agents can read, and perhaps modify, any part of a\n   Diameter message, including an overload report.\n\n   There are several ways an attacker might attempt to exploit the\n   overload control mechanism.  An unauthorized third party might inject\n   an overload report into the network.  If this third party is upstream\n   of an agent, and that agent fails to ap
 ply proper authorization\n   policies, downstream nodes may mistakenly trust the report.  This\n   attack is at least partially mitigated by the assumption that nodes\n   include overload reports in Diameter answers but not in requests.\n   This requires an attacker to have knowledge of the original request\n   in order to construct a response.  Therefore, implementations SHOULD\n   validate that an answer containing an overload report is a properly\n   constructed response to a pending request prior to acting on the\n   overload report.\n\n   A similar attack involves an otherwise authorized Diameter node that\n   sends an inappropriate overload report.  For example, a server for\n   the realm "example.com" might send an overload report indicating that\n   a competitor\'s realm "example.net" is overloaded.  If other nodes act\n   on the report, they may falsely believe that "example.net" is\n   overloaded, effectively reducing that realm\'s capacity.  Therefore,\n   it\'s critical 
 that nodes validate that an overload report received\n   from a peer actually falls within that peer\'s responsibility before\n   acting on the report or forwarding the report to other peers.  For\n   example, an overload report from a peer that applies to a realm not\n   handled by that peer is suspect.\n\n   An attacker might use the information in an overload report to assist\n   in certain attacks.  For example, an attacker could use information\n   about current overload conditions to time a DoS attack for maximum\n   effect, or use subsequent overload reports as a feedback mechanism to\n   learn the results of a previous or ongoing attack.\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 30]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n9.2.  Denial of Service Attacks\n\n   Diameter overload reports can cause a node to cease sending some or\n   all Diameter requests for an extended period.  This makes the
 m a\n   tempting vector for DoS tacks.  Furthermore, since Diameter is almost\n   always used in support of other protocols, a DoS attack on Diameter\n   is likely to impact those protocols as well.  Therefore, Diameter\n   nodes MUST NOT honor or forward overload reports from unauthorized or\n   otherwise untrusted sources.\n\n9.3.  Non-Compliant Nodes\n\n   When a Diameter node sends an overload report, it cannot assume that\n   all nodes will comply.  A non-compliant node might continue to send\n   requests with no reduction in load.  Requirement 28 [RFC7068]\n   indicates that the overload control solution cannot assume that all\n   Diameter nodes in a network are necessarily trusted, and that\n   malicious nodes not be allowed to take advantage of the overload\n   control mechanism to get more than their fair share of service.\n\n   In the absence of an overload control mechanism, Diameter nodes need\n   to implement strategies to protect themselves from floods of\n   requests,
  and to make sure that a disproportionate load from one\n   source does not prevent other sources from receiving service.  For\n   example, a Diameter server might reject a certain percentage of\n   requests from sources that exceed certain limits.  Overload control\n   can be thought of as an optimization for such strategies, where\n   downstream nodes never send the excess requests in the first place.\n   However, the presence of an overload control mechanism does not\n   remove the need for these other protection strategies.\n\n9.4.  End-to End-Security Issues\n\n   The lack of end-to-end security features makes it far more difficult\n   to establish trust in overload reports that originate from non-\n   adjacent nodes.  Any agents in the message path may insert or modify\n   overload reports.  Nodes must trust that their adjacent peers perform\n   proper checks on overload reports from their peers, and so on,\n   creating a transitive-trust requirement extending for potentially\
 n   long chains of nodes.  Network operators must determine if this\n   transitive trust requirement is acceptable for their deployments.\n   Nodes supporting Diameter overload control MUST give operators the\n   ability to select which peers are trusted to deliver overload\n   reports, and whether they are trusted to forward overload reports\n   from non-adjacent nodes.\n\n   The lack of end-to-end confidentiality protection means that any\n   Diameter agent in the path of an overload report can view the\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 31]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   contents of that report.  In addition to the requirement to select\n   which peers are trusted to send overload reports, operators MUST be\n   able to select which peers are authorized to receive reports.  A node\n   MUST not send an overload report to a peer not authorized to receive\n   it.  Furthermore, an agent MUST
  remove any overload reports that\n   might have been inserted by other nodes before forwarding a Diameter\n   message to a peer that is not authorized to receive overload reports.\n\n   At the time of this writing, the DIME working group is studying\n   requirements for adding end-to-end security\n   [I-D.ietf-dime-e2e-sec-req] features to Diameter.  These features,\n   when they become available, might make it easier to establish trust\n   in non-adjacent nodes for overload control purposes.  Readers should\n   be reminded, however, that the overload control mechanism encourages\n   Diameter agents to modify AVPs in, or insert additional AVPs into,\n   existing messages that are originated by other nodes.  If end-to-end\n   security is enabled, there is a risk that such modification could\n   violate integrity protection.  The details of using any future\n   Diameter end-to-end security mechanism with overload control will\n   require careful consideration, and are beyond the scop
 e of this\n   document.\n\n10.  Contributors\n\n   The following people contributed substantial ideas, feedback, and\n   discussion to this document:\n\n   o  Eric McMurry\n\n   o  Hannes Tschofenig\n\n   o  Ulrich Wiehe\n\n   o  Jean-Jacques Trottin\n\n   o  Maria Cruz Bartolome\n\n   o  Martin Dolly\n\n   o  Nirav Salot\n\n   o  Susan Shishufeng\n\n11.  References\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 32]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n11.1.  Normative References\n\n   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate\n              Requirement Levels", BCP 14, RFC 2119, March 1997.\n\n   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an\n              IANA Considerations Section in RFCs", BCP 26, RFC 5226,\n              May 2008.\n\n   [RFC5905]  Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network\n              Time Protocol Version 4: Protocol 
 and Algorithms\n              Specification", RFC 5905, June 2010.\n\n   [RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,\n              "Diameter Base Protocol", RFC 6733, October 2012.\n\n11.2.  Informative References\n\n   [Cx]       3GPP, , "ETSI TS 129 229 V11.4.0", August 2013.\n\n   [I-D.ietf-dime-e2e-sec-req]\n              Tschofenig, H., Korhonen, J., Zorn, G., and K. Pillay,\n              "Diameter AVP Level Security: Scenarios and Requirements",\n              draft-ietf-dime-e2e-sec-req-00 (work in progress),\n              September 2013.\n\n   [PCC]      3GPP, , "ETSI TS 123 203 V11.12.0", December 2013.\n\n   [RFC4006]  Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J.\n              Loughney, "Diameter Credit-Control Application", RFC 4006,\n              August 2005.\n\n   [RFC5729]  Korhonen, J., Jones, M., Morand, L., and T. Tsou,\n              "Clarifications on the Routing of Diameter Requests Based\n              on the Username and the
  Realm", RFC 5729, December 2009.\n\n   [RFC7068]  McMurry, E. and B. Campbell, "Diameter Overload Control\n              Requirements", RFC 7068, November 2013.\n\n   [S13]      3GPP, , "ETSI TS 129 272 V11.9.0", December 2012.\n\nAppendix A.  Issues left for future specifications\n\n   The base solution for the overload control does not cover all\n   possible use cases.  A number of solution aspects were intentionally\n   left for future specification and protocol work.\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 33]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\nA.1.  Additional traffic abatement algorithms\n\n   This specification describes only means for a simple loss based\n   algorithm.  Future algorithms can be added using the designed\n   solution extension mechanism.  The new algorithms need to be\n   registered with IANA.  See Sections 6.1 and 8 for the required IANA\n   steps.\n\nA.2.  Agent Overload\
 n\n   This specification focuses on Diameter endpoint (server or client)\n   overload.  A separate extension will be required to outline the\n   handling the case of agent overload.\n\nA.3.  Requirements Conformance Analysis\n\n   This section contains the result of an analysis of the DOIC solutions\n   conformance to the requirements defined in [RFC7068].\n\n   To be completed.\n\nA.4.  DIAMETER_TOO_BUSY clarifications\n\n   The current [RFC6733] behavior in a case of DIAMETER_TOO_BUSY is\n   somewhat under specified.  For example, there is no information how\n   long the specific Diameter node is willing to be unavailable.  A\n   specification updating [RFC6733] should clarify the handling of\n   DIAMETER_TOO_BUSY from the error answer initiating Diameter node\n   point of view and from the original request initiating Diameter node\n   point of view.  Further, the inclusion of possible additional\n   information providing AVPs should be discussed and possible be\n   recommended to
  be used.\n\nAppendix B.  Deployment Considerations\n\n   Non supporting agents\n\n      Due to the way that realm-routed requests are handled in Diameter\n      networks, with the server selection for the request done by an\n      agent, it is recommended that deployments upgrade all agents with\n      direct connections to servers prior to enabling the DOIC solution\n      in the Diameter network.\n\n   Topology hiding interactions\n\n      There exist proxies that implement what is referred to as Topology\n      Hiding.  This can include cases where the agent modifies the\n      Origin-Host in answer messages.  The behavior of the DOIC solution\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 34]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      is not well understood when this happens.  As such, the DOIC\n      solution does not address this scenario.\n\nAppendix C.  Considerations for Applications Integrating the 
 DOIC\n             Solution\n\n   This section outlines considerations to be taken into account when\n   integrating the DOIC solution into Diameter applications.\n\nC.1.  Application Classification\n\n   The following is a classification of Diameter applications and\n   request types.  This discussion is meant to document factors that\n   play into decisions made by the Diameter identity responsible for\n   handling overload reports.\n\n   Section 8.1 of [RFC6733] defines two state machines that imply two\n   types of applications, session-less and session-based applications.\n   The primary difference between these types of applications is the\n   lifetime of Session-Ids.\n\n   For session-based applications, the Session-Id is used to tie\n   multiple requests into a single session.\n\n   The Credit-Control application defined in [RFC4006] is an example of\n   a Diameter session-based application.\n\n   In session-less applications, the lifetime of the Session-Id is a\n   single D
 iameter transaction, i.e. the session is implicitly\n   terminated after a single Diameter transaction and a new Session-Id\n   is generated for each Diameter request.\n\n   For the purposes of this discussion, session-less applications are\n   further divided into two types of applications:\n\n   Stateless applications:\n\n      Requests within a stateless application have no relationship to\n      each other.  The 3GPP defined S13 application is an example of a\n      stateless application [S13], where only a Diameter command is\n      defined between a client and a server and no state is maintained\n      between two consecutive transactions.\n\n   Pseudo-session applications:\n\n      Applications that do not rely on the Session-Id AVP for\n      correlation of application messages related to the same session\n      but use other session-related information in the Diameter requests\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 35]\n_\nInternet-Draft
                     DOIC                      October 2014\n\n\n      for this purpose.  The 3GPP defined Cx application [Cx] is an\n      example of a pseudo-session application.\n\n   The handling of overload reports must take the type of application\n   into consideration, as discussed in Appendix C.2.\n\nC.2.  Application Type Overload Implications\n\n   This section discusses considerations for mitigating overload\n   reported by a Diameter entity.  This discussion focuses on the type\n   of application.  Appendix C.3 discusses considerations for handling\n   various request types when the target server is known to be in an\n   overloaded state.\n\n   These discussions assume that the strategy for mitigating the\n   reported overload is to reduce the overall workload sent to the\n   overloaded entity.  The concept of applying overload treatment to\n   requests targeted for an overloaded Diameter entity is inherent to\n   this discussion.  The method used to reduce offered load 
 is not\n   specified here but could include routing requests to another Diameter\n   entity known to be able to handle them, or it could mean rejecting\n   certain requests.  For a Diameter agent, rejecting requests will\n   usually mean generating appropriate Diameter error responses.  For a\n   Diameter client, rejecting requests will depend upon the application.\n   For example, it could mean giving an indication to the entity\n   requesting the Diameter service that the network is busy and to try\n   again later.\n\n   Stateless applications:\n\n      By definition there is no relationship between individual requests\n      in a stateless application.  As a result, when a request is sent\n      or relayed to an overloaded Diameter entity - either a Diameter\n      Server or a Diameter Agent - the sending or relaying entity can\n      choose to apply the overload treatment to any request targeted for\n      the overloaded entity.\n\n   Pseudo-session applications:\n\n      For ps
 eudo-session applications, there is an implied ordering of\n      requests.  As a result, decisions about which requests towards an\n      overloaded entity to reject could take the command code of the\n      request into consideration.  This generally means that\n      transactions later in the sequence of transactions should be given\n      more favorable treatment than messages earlier in the sequence.\n      This is because more work has already been done by the Diameter\n      network for those transactions that occur later in the sequence.\n      Rejecting them could result in increasing the load on the network\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 36]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      as the transactions earlier in the sequence might also need to be\n      repeated.\n\n   Session-based applications:\n\n      Overload handling for session-based applications must take into\n      conside
 ration the work load associated with setting up and\n      maintaining a session.  As such, the entity sending requests\n      towards an overloaded Diameter entity for a session-based\n      application might tend to reject new session requests prior to\n      rejecting intra-session requests.  In addition, session ending\n      requests might be given a lower probability of being rejected as\n      rejecting session ending requests could result in session status\n      being out of sync between the Diameter clients and servers.\n      Application designers that would decide to reject mid-session\n      requests will need to consider whether the rejection invalidates\n      the session and any resulting session clean-up procedures.\n\nC.3.  Request Transaction Classification\n\n   Independent Request:\n\n      An independent request is not correlated to any other requests\n      and, as such, the lifetime of the session-id is constrained to an\n      individual transaction.\n\n   S
 ession-Initiating Request:\n\n      A session-initiating request is the initial message that\n      establishes a Diameter session.  The ACR message defined in\n      [RFC6733] is an example of a session-initiating request.\n\n   Correlated Session-Initiating Request:\n\n      There are cases when multiple session-initiated requests must be\n      correlated and managed by the same Diameter server.  It is notably\n      the case in the 3GPP PCC architecture [PCC], where multiple\n      apparently independent Diameter application sessions are actually\n      correlated and must be handled by the same Diameter server.\n\n   Intra-Session Request:\n\n      An intra session request is a request that uses the same Session-\n      Id than the one used in a previous request.  An intra session\n      request generally needs to be delivered to the server that handled\n      the session creating request for the session.  The STR message\n      defined in [RFC6733] is an example of an intra-se
 ssion requests.\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 37]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Pseudo-Session Requests:\n\n      Pseudo-session requests are independent requests and do not use\n      the same Session-Id but are correlated by other session-related\n      information contained in the request.  There exists Diameter\n      applications that define an expected ordering of transactions.\n      This sequencing of independent transactions results in a pseudo\n      session.  The AIR, MAR and SAR requests in the 3GPP defined Cx\n      [Cx] application are examples of pseudo-session requests.\n\nC.4.  Request Type Overload Implications\n\n   The request classes identified in Appendix C.3 have implications on\n   decisions about which requests should be throttled first.  The\n   following list of request treatment regarding throttling is provided\n   as guidelines for application designers
  when implementing the\n   Diameter overload control mechanism described in this document.  The\n   exact behavior regarding throttling is a matter of local policy,\n   unless specifically defined for the application.\n\n   Independent requests:\n\n      Independent requests can generally be given equal treatment when\n      making throttling decisions, unless otherwise indicated by\n      application requirements or local policy.\n\n   Session-initiating requests:\n\n      Session-initiating requests often represent more work than\n      independent or intra-session requests.  Moreover, session-\n      initiating requests are typically followed by other session-\n      related requests.  Since the main objective of the overload\n      control is to reduce the total number of requests sent to the\n      overloaded entity, throttling decisions might favor allowing\n      intra-session requests over session-initiating requests.  In the\n      absence of local policies or application s
 pecific requirements to\n      the contrary, Individual session-initiating requests can be given\n      equal treatment when making throttling decisions.\n\n   Correlated session-initiating requests:\n\n      A Request that results in a new binding, where the binding is used\n      for routing of subsequent session-initiating requests to the same\n      server, represents more work load than other requests.  As such,\n      these requests might be throttled more frequently than other\n      request types.\n\n   Pseudo-session requests:\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 38]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n      Throttling decisions for pseudo-session requests can take into\n      consideration where individual requests fit into the overall\n      sequence of requests within the pseudo session.  Requests that are\n      earlier in the sequence might be throttled more aggressively than\n      re
 quests that occur later in the sequence.\n\n   Intra-session requests:\n\n      There are two types of intra-sessions requests, requests that\n      terminate a session and the remainder of intra-session requests.\n      Implementors and operators may choose to throttle session-\n      terminating requests less aggressively in order to gracefully\n      terminate sessions, allow clean-up of the related resources (e.g.\n      session state) and avoid the need for additional intra-session\n      requests.  Favoring session-termination requests may reduce the\n      session management impact on the overloaded entity.  The default\n      handling of other intra-session requests might be to treat them\n      equally when making throttling decisions.  There might also be\n      application level considerations whether some request types are\n      favored over others.\n\nAuthors\' Addresses\n\n   Jouni Korhonen (editor)\n   Broadcom\n   Porkkalankatu 24\n   Helsinki  FIN-00180\n   Finland
 \n\n   Email: jouni.nospam@gmail.com\n\n\n   Steve Donovan (editor)\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: srdonovan@usdonovans.com\n\n\n   Ben Campbell\n   Oracle\n   7460 Warren Parkway\n   Frisco, Texas  75034\n   United States\n\n   Email: ben@nostrum.com\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 39]\n_\nInternet-Draft                    DOIC                      October 2014\n\n\n   Lionel Morand\n   Orange Labs\n   38/40 rue du General Leclerc\n   Issy-Les-Moulineaux Cedex 9  92794\n   France\n\n   Phone: +33145296257\n   Email: lionel.morand@orange.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nKorhonen, et al.         Expires April 25, 2015                [Page 40]\n', 'url1': '', 'submit': 'Generate diff', 'url2': '', '--newcolour': 'green'} -->
--------------080705080607070801010908--


From nobody Thu Oct 23 09:49:46 2014
Return-Path: <maria.cruz.bartolome@ericsson.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2AAD81ACDA4 for <dime@ietfa.amsl.com>; Thu, 23 Oct 2014 09:49:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dfX7d6HF7djU for <dime@ietfa.amsl.com>; Thu, 23 Oct 2014 09:49:38 -0700 (PDT)
Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CEF941ACD81 for <dime@ietf.org>; Thu, 23 Oct 2014 09:49:37 -0700 (PDT)
X-AuditID: c1b4fb30-f79e66d000000ff1-0c-5449319f47ae
Received: from ESESSHC020.ericsson.se (Unknown_Domain [153.88.253.124]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id C6.58.04081.F9139445; Thu, 23 Oct 2014 18:49:35 +0200 (CEST)
Received: from ESESSMB101.ericsson.se ([169.254.1.145]) by ESESSHC020.ericsson.se ([153.88.183.78]) with mapi id 14.03.0174.001; Thu, 23 Oct 2014 18:49:35 +0200
From: Maria Cruz Bartolome <maria.cruz.bartolome@ericsson.com>
To: Steve Donovan <srdonovan@usdonovans.com>, "dime@ietf.org" <dime@ietf.org>
Thread-Topic: [Dime] Resolution to issue 69 and part of issue 23
Thread-Index: AQHP7bvnJeH5+Lu+jkWVySE0RoW1TZw95p8A
Date: Thu, 23 Oct 2014 16:49:34 +0000
Message-ID: <087A34937E64E74E848732CFF8354B9209851D53@ESESSMB101.ericsson.se>
References: <54473C8A.5030801@usdonovans.com>
In-Reply-To: <54473C8A.5030801@usdonovans.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [153.88.183.150]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrALMWRmVeSWpSXmKPExsUyM+Jvje58Q88Qg+5bxhZze1ewWWxo4nFg 8liy5CeTx6q3fawBTFFcNimpOZllqUX6dglcGbu7bzAXPOSpWLrxL2MD4xzOLkZODgkBE4nv m3vYIGwxiQv31gPZXBxCAkcZJTaePsII4SxhlLjV28QMUsUmYCdx6fQLJhBbRMBX4njnaRYQ W1jAXuLvkz52iLiDxMSzS4DiHEC2kcSlLW4gYRYBVYmWCY/AxvACtW648BNsjJCArsS7d79Z QWxOAT2J/qM/GEFsRqCDvp9aA1bDLCAucevJfCaIQwUkluw5zwxhi0q8fPyPFcJWklix/RIj RL2exI2pU9ggbG2JZQtfQ+0VlDg58wnLBEbRWUjGzkLSMgtJyywkLQsYWVYxihanFiflphsZ 6aUWZSYXF+fn6eWllmxiBEbJwS2/DXYwvnzueIhRgINRiYc3YaZHiBBrYllxZe4hRmkOFiVx 3oXn5gULCaQnlqRmp6YWpBbFF5XmpBYfYmTi4JRqYCzad2+a6f/pc3/Wferw/XTtqM+89ffk NS0Sm0s28N1LrwvwkJz4fNOXagPPZfd25/OE6O9UvLwxk6/YbPuUohTp5D3c136VPW39zP7l 6c8TZpG7Vv+5sWr1h83Va9WyeR8k6YSwXjg8pztWsbnJgTFw2ynJ+Z93/Pm7X3zdDk3bHh7f xQLXFW4qsRRnJBpqMRcVJwIAMVaM+XMCAAA=
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Fa4eVARPjmaRXcc-QeiViLS1XjA
Subject: Re: [Dime] Resolution to issue 69 and part of issue 23
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 Oct 2014 16:49:43 -0000

Hello Steve,

In this paragraph, "reacting" shall be replaced by "reporting", two places:

           The reacting node MAY extend the validatity duration for an exis=
ting
           overload report by sending a OLR with either the same or a new
           validity duration value.  When doing so, the reacting node MUST =
increase the
           sequence number in the new OLR sent.

Best regards
/MCruz

-----Original Message-----
From: DiME [mailto:dime-bounces@ietf.org] On Behalf Of Steve Donovan
Sent: mi=E9rcoles, 22 de octubre de 2014 7:12
To: dime@ietf.org
Subject: [Dime] Resolution to issue 69 and part of issue 23

I added Lionel's proposed wording to the reporting node sub section of the =
overload report handling section.

I also modified the first paragraph below and added the other two paragraph=
s.  Those changes were not directly related to issue 69 but were needed in =
this section.

           The reporting node MAY update the overload report with new reduc=
tion
           percentages.

           The reacting node MAY extend the validatity duration for an exis=
ting
           overload report by sending a OLR with either the same or a new
           validity duration value.  When doing so, the reacting node MUST =
increase the
           sequence number in the new OLR sent.

           When sending an overload report with new values in any of the su=
b AVPs
           for an existing overload condition, the reporting node MUST incr=
ease the
           sequence number in the new OLR sent.

I have attached the diff file.

Regards,

Steve




From nobody Sun Oct 26 14:40:47 2014
Return-Path: <jouni.nospam@gmail.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 324801A1A9E for <dime@ietfa.amsl.com>; Sun, 26 Oct 2014 14:40:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level: 
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9,  DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h1E6a-1hcCXV for <dime@ietfa.amsl.com>; Sun, 26 Oct 2014 14:40:44 -0700 (PDT)
Received: from mail-lb0-x230.google.com (mail-lb0-x230.google.com [IPv6:2a00:1450:4010:c04::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 460C61A1A8B for <dime@ietf.org>; Sun, 26 Oct 2014 14:40:44 -0700 (PDT)
Received: by mail-lb0-f176.google.com with SMTP id p9so4698526lbv.7 for <dime@ietf.org>; Sun, 26 Oct 2014 14:40:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;  h=subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=+VxSTqOeopcQl10LsK6UIdTJOAD9n8nNHcqLLBwM5rk=; b=jhXgGhFrc403B2+dA7ux/Zx9Nghafg73Ob3pTBu8pKuZ41GMy74eUzndNoRz/JTIMg 0/TIAPAXU2sm4RZoEUcy+46QaU2Bsxz15p3ARmDwGBfHi2hYm3HX6V1ONbYvJHL4NCVD fhvU3vcoSQ62UVimPAzDWATrLQH0NvYsTKDDcaGjrQTd7gqle8JD9XUVC2b4cYjskiHX hhqRoa21ixRbVbMEWXOy/6nrA33hoz9hEOd1H3Z9A/ZsMOffx5JtBCkKxBsl1d9BvE8R maMxPiBngjpaD/cNCRQbVbhCGye3/vtCSU5Oa1NPeKu0/lkRSMUAX3u3KGmYROHLlROD 2/kg==
X-Received: by 10.112.221.226 with SMTP id qh2mr19306551lbc.5.1414359642478; Sun, 26 Oct 2014 14:40:42 -0700 (PDT)
Received: from [188.117.15.109] ([188.117.15.109]) by mx.google.com with ESMTPSA id x6sm4278456lbj.40.2014.10.26.14.40.41 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 26 Oct 2014 14:40:41 -0700 (PDT)
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain; charset=us-ascii
From: Jouni <jouni.nospam@gmail.com>
In-Reply-To: <5BCBA1FC2B7F0B4C9D935572D900066815218E40@DEMUMBX014.nsn-intra.net>
Date: Sun, 26 Oct 2014 23:40:39 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <F9B1EDDC-BE6F-47AF-83E5-657833A3B197@gmail.com>
References: <087A34937E64E74E848732CFF8354B9209852157@ESESSMB101.ericsson.se> <5BCBA1FC2B7F0B4C9D935572D900066815218E40@DEMUMBX014.nsn-intra.net>
To: "Wiehe, Ulrich (NSN - DE/Munich)" <ulrich.wiehe@nsn.com>
X-Mailer: Apple Mail (2.1283)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/5i6P8vHW8OZZjqQDbJcsz71TeKQ
Cc: "dime@ietf.org list" <dime@ietf.org>
Subject: Re: [Dime] -04 review
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 26 Oct 2014 21:40:46 -0000

Ulrich,

   Figure 1 illustrates the simplified architecture for Diameter
   overload information conveyance.
=20
=20
    Realm X                                  Same or other Realms
   <--------------------------------------> <---------------------->
=20
=20
      +--^-----+                 : (optional) :
      |Diameter|                 :            :
      |Server A|--+     .--.     : +---^----+ :     .--.
      +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+
                  +--(        )--:-|  Agent |-:--(        )--|Diameter|
      +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |
      |Diameter|--+  `--(___.-'  :            :  `--(___.-'  +-----^--+
      |Server B|                 :            :
      +---^----+                 :            :
=20
                          End-to-end Overload Indication
             1)  <----------------------------------------------->
                             Diameter Application Y
=20
                  Overload Indication A    Overload Indication A'
             2)  <----------------------> <---------------------->
                 standard base protocol   standard base protocol
=20
=20
=20
     Figure 1: Simplified architecture choices for overload indication
                                 delivery
=20
   In Figure 1, the Diameter overload indication can be conveyed (1)
   end-to-end between servers and clients or (2) between servers and
   Diameter agent inside the realm and then between the Diameter agent
   and the clients[UW1] .

[UW1] I guess I do not fully understand case (2) by "standard base =
protocol" you mean CER/CEA and DWR/DWA ??

Not necessarily. It can be, though. The "standard base protocol" should =
be replaced with "Diameter Application Y".

- Jouni






On Oct 25, 2014, at 3:32 PM, Wiehe, Ulrich (NSN - DE/Munich) wrote:

> Steve,
> =20
> please find my comments attached.
> =20
> Best regards
> Ulrich
> <04-review UW.docx>


From nobody Mon Oct 27 10:47:35 2014
Return-Path: <internet-drafts@ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4A6771A87AE; Mon, 27 Oct 2014 10:47:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IPYa2gE6OvMu; Mon, 27 Oct 2014 10:47:15 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 3954E1A871B; Mon, 27 Oct 2014 10:45:59 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: internet-drafts@ietf.org
To: i-d-announce@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 5.7.1
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20141027174559.26683.4464.idtracker@ietfa.amsl.com>
Date: Mon, 27 Oct 2014 10:45:59 -0700
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/Nc-9yjS-knb6Iss1OApf3pYQlcA
Cc: dime@ietf.org
Subject: [Dime] I-D Action: draft-ietf-dime-ovli-04.txt
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 27 Oct 2014 17:47:18 -0000

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the Diameter Maintenance and Extensions Working Group of the IETF.

        Title           : Diameter Overload Indication Conveyance
        Authors         : Jouni Korhonen
                          Steve Donovan
                          Ben Campbell
                          Lionel Morand
	Filename        : draft-ietf-dime-ovli-04.txt
	Pages           : 39
	Date            : 2014-10-27

Abstract:
   This specification documents a Diameter Overload Control (DOC) base
   solution and the dissemination of the overload report information.

Requirements

The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-dime-ovli/

There's also a htmlized version available at:
http://tools.ietf.org/html/draft-ietf-dime-ovli-04

A diff from the previous version is available at:
http://www.ietf.org/rfcdiff?url2=draft-ietf-dime-ovli-04


Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/


From nobody Tue Oct 28 08:17:48 2014
Return-Path: <lionel.morand@orange.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D82B61A8A9E for <dime@ietfa.amsl.com>; Tue, 28 Oct 2014 08:17:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Level: 
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id A5UXqfCrKnlv for <dime@ietfa.amsl.com>; Tue, 28 Oct 2014 08:17:45 -0700 (PDT)
Received: from relais-inet.francetelecom.com (relais-ias245.francetelecom.com [80.12.204.245]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BD7DD1A8A81 for <dime@ietf.org>; Tue, 28 Oct 2014 08:17:44 -0700 (PDT)
Received: from omfeda06.si.francetelecom.fr (unknown [xx.xx.xx.199]) by omfeda10.si.francetelecom.fr (ESMTP service) with ESMTP id 969923741EC for <dime@ietf.org>; Tue, 28 Oct 2014 16:17:42 +0100 (CET)
Received: from Exchangemail-eme1.itn.ftgroup (unknown [10.114.1.183]) by omfeda06.si.francetelecom.fr (ESMTP service) with ESMTP id 7EBBFC807F for <dime@ietf.org>; Tue, 28 Oct 2014 16:17:42 +0100 (CET)
Received: from PEXCVZYM13.corporate.adroot.infra.ftgroup ([fe80::cc7e:e40b:42ef:164e]) by PEXCVZYH02.corporate.adroot.infra.ftgroup ([::1]) with mapi id 14.03.0195.001; Tue, 28 Oct 2014 16:17:42 +0100
From: <lionel.morand@orange.com>
To: "dime@ietf.org" <dime@ietf.org>
Thread-Topic: Test
Thread-Index: Ac/ywkzuqV86pUoESvug2Lh62NUYuw==
Date: Tue, 28 Oct 2014 15:17:40 +0000
Message-ID: <16522_1414509462_544FB396_16522_1361_1_6B7134B31289DC4FAF731D844122B36E84C94E@PEXCVZYM13.corporate.adroot.infra.ftgroup>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.197.38.2]
Content-Type: multipart/alternative; boundary="_000_6B7134B31289DC4FAF731D844122B36E84C94EPEXCVZYM13corpora_"
MIME-Version: 1.0
X-PMX-Version: 6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.10.23.30920
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/TM-PvaIZg76MDzwhSAt6VbAeGwk
Subject: [Dime] Test
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Oct 2014 15:17:47 -0000

--_000_6B7134B31289DC4FAF731D844122B36E84C94EPEXCVZYM13corpora_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

please ignore

___________________________________________________________________________=
______________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.


--_000_6B7134B31289DC4FAF731D844122B36E84C94EPEXCVZYM13corpora_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii">
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"FR" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">please ignore<o:p></o:p></p>
</div>
<PRE>______________________________________________________________________=
___________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confiden=
tielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu=
 ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages el=
ectroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou =
falsifie. Merci.

This message and its attachments may contain confidential or privileged inf=
ormation that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and dele=
te this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been =
modified, changed or falsified.
Thank you.
</PRE></body>
</html>

--_000_6B7134B31289DC4FAF731D844122B36E84C94EPEXCVZYM13corpora_--


From nobody Tue Oct 28 14:43:48 2014
Return-Path: <ben@nostrum.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 722CB1AD0A1 for <dime@ietfa.amsl.com>; Tue, 28 Oct 2014 14:43:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pgaftj-3oxqn for <dime@ietfa.amsl.com>; Tue, 28 Oct 2014 14:43:38 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9A0E61AD0B9 for <dime@ietf.org>; Tue, 28 Oct 2014 14:43:16 -0700 (PDT)
Received: from [10.0.1.23] (cpe-173-172-146-58.tx.res.rr.com [173.172.146.58]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id s9SLhE3s073806 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <dime@ietf.org>; Tue, 28 Oct 2014 16:43:15 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-173-172-146-58.tx.res.rr.com [173.172.146.58] claimed to be [10.0.1.23]
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: Ben Campbell <ben@nostrum.com>
Date: Tue, 28 Oct 2014 16:43:14 -0500
X-Mao-Original-Outgoing-Id: 436225394.571374-7a5e73cc9704cec454ff6ce2d6a56edf
Content-Transfer-Encoding: quoted-printable
Message-Id: <1EE50EC3-AF07-41D3-AB56-BDC93CA24EFF@nostrum.com>
References: <20141025224431.22600.89722.idtracker@ietfa.amsl.com>
To: "dime@ietf.org list" <dime@ietf.org>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/mbX6V3lZ0O6cMZesW4oVrD_zLy8
Subject: [Dime] Load Considerations
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Oct 2014 21:43:40 -0000

Hi,

Early in the DOIC work, we decided to defer the "load" (not "overload") =
related requirements from RFC 7068 until later. Since it looks like the =
core DOIC draft is starting to stabilize, we should start thinking about =
load conveyance soon. I put together a draft discussing several high =
level architectural considerations that the working group will need to =
consider in any "load conveyance" solution.

This is _not_ a solution proposal. But I hope it will spur discussion =
that can lead to a proposal down the line.

Thanks!

Ben.

> Begin forwarded message:
>=20
> From: internet-drafts@ietf.org
> To: Ben Campbell <ben@nostrum.com>, "Ben Campbell" <ben@nostrum.com>
> Subject: New Version Notification for =
draft-campbell-dime-load-considerations-00.txt
> Date: October 25, 2014 at 5:44:31 PM CDT
>=20
>=20
> A new version of I-D, draft-campbell-dime-load-considerations-00.txt
> has been successfully submitted by Ben Campbell and posted to the
> IETF repository.
>=20
> Name:		draft-campbell-dime-load-considerations
> Revision:	00
> Title:		Architectural Considerations for Diameter Load =
Information
> Document date:	2014-10-25
> Group:		Individual Submission
> Pages:		9
> URL:            =
http://www.ietf.org/internet-drafts/draft-campbell-dime-load-consideration=
s-00.txt
> Status:         =
https://datatracker.ietf.org/doc/draft-campbell-dime-load-considerations/
> Htmlized:       =
http://tools.ietf.org/html/draft-campbell-dime-load-considerations-00
>=20
>=20
> Abstract:
>   RFC 7068 describes requirements for Overload Control in Diameter.
>   This includes a requirement to allow Diameter nodes to send "load"
>   information, even when the node is not overloaded.  The Diameter
>   Overload Information Conveyance (DOIC) solution describes a =
mechanism
>   meeting most of the requirements, but does not currently include the
>   ability to send load.  This document explores some architectural
>   considerations for a mechanism to send load information.
>=20
>=20
>=20
>=20
> Please note that it may take a couple of minutes from the time of =
submission
> until the htmlized version and diff are available at tools.ietf.org.
>=20
> The IETF Secretariat
>=20


From nobody Wed Oct 29 08:52:25 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4E2831A1A74 for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 08:52:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nxtczzUqmLvv for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 08:52:23 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CF6001A1A5E for <dime@ietf.org>; Wed, 29 Oct 2014 08:52:23 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:62568 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XjVXo-000Amv-MQ for dime@ietf.org; Wed, 29 Oct 2014 08:52:22 -0700
Message-ID: <54510D34.3030104@usdonovans.com>
Date: Wed, 29 Oct 2014 10:52:20 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/0RUBg1qiMb6zIhpGHbNJxMbv-Qs
Subject: [Dime] test
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 15:52:24 -0000

Please ignore


From nobody Wed Oct 29 09:12:13 2014
Return-Path: <Internet-Drafts@ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3C3A01A1B31; Wed, 29 Oct 2014 09:12:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.89
X-Spam-Level: 
X-Spam-Status: No, score=-1.89 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_TVD_MIME_NO_HEADERS=0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7vfVlEveNDMm; Wed, 29 Oct 2014 09:11:52 -0700 (PDT)
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 75F7C1A1B17; Wed, 29 Oct 2014 09:11:52 -0700 (PDT)
MIME-Version: 1.0
Content-Type: Multipart/Mixed; Boundary="NextPart"
From: Internet-Drafts@ietf.org
To: i-d-announce@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 5.7.1.p2
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <20141029161152.18379.88915.idtracker@ietfa.amsl.com>
Date: Wed, 29 Oct 2014 09:11:52 -0700
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/5e3RroPlMD_brwZZRdtv6_QuVhQ
Cc: dime@ietf.org
Subject: [Dime] I-D ACTION:draft-ietf-dime-congestion-flow-attributes-01.txt
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 16:12:01 -0000

--NextPart

A new Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Diameter Maintenance and Extensions Working Group of the IETF.

    Title         : Diameter Congestion and Filter Attributes
    Author(s)     : B. Hirschman, et al
    Filename      : draft-ietf-dime-congestion-flow-attributes
    Pages         : 9 
    Date          : 2014-10-29 
    
   This document defines optional ECN and filter related attributes that
   can be used for improved traffic identification, support of ECN and
   minimized filter administration within Diameter.

   RFC 5777 defines a Filter-Rule AVP that accommodates extensions for
   classification, conditions and actions. It does not support traffic
   identification for packets using Explicit Congestion Notification as
   defined in RFC 3168 and does not provide specific actions when the
   flow(s) described by the Filter-Rule are congested.

   A Filter-Rule can describe multiple flows but not the exact number of
   flows. Flow count and other associated data (e.g. packets) is not
   captured in Accounting applications, leaving administrators without
   useful information regarding the effectiveness or understanding of
   the filter definition.

   These optional attributes are forward and backwards compatible with
   RFC 5777.

A URL for this Internet-Draft is:
https://www.ietf.org/internet-drafts/draft-ietf-dime-congestion-flow-attributes-01.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
 name="draft-ietf-dime-congestion-flow-attributes";
 site="ftp.ietf.org"; access-type="anon-ftp";
 directory="internet-drafts"

Content-Type: text/plain
Content-ID: <2014-10-29091152.I-D@ietf.org>


--NextPart--


From nobody Wed Oct 29 09:52:45 2014
Return-Path: <Lyle.T.Bertz@sprint.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7C1D21A1B4F for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 09:52:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level: 
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id T0CAl56EnZ8y for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 09:52:40 -0700 (PDT)
Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0752.outbound.protection.outlook.com [IPv6:2a01:111:f400:fc10::1:752]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7CC8E1A1BA3 for <dime@ietf.org>; Wed, 29 Oct 2014 09:52:40 -0700 (PDT)
Received: from BL2FFO11FD035.protection.gbl (10.173.160.31) by BL2FFO11HUB055.protection.gbl (10.173.161.155) with Microsoft SMTP Server (TLS) id 15.0.1049.20; Wed, 29 Oct 2014 16:52:17 +0000
Received: from plsasdm2.corp.sprint.com (144.230.168.26) by BL2FFO11FD035.mail.protection.outlook.com (10.173.161.131) with Microsoft SMTP Server (TLS) id 15.0.1049.20 via Frontend Transport; Wed, 29 Oct 2014 16:52:17 +0000
Received: from pdaasen2.corp.sprint.com (pdaasen2.corp.sprint.com [144.226.111.130]) by plsasdm2.corp.sprint.com (Sentrion-MTA-4.3.0/Sentrion-MTA-4.3.0) with ESMTP id s9TGqGdK005912 (version=TLSv1/SSLv3 cipher=ADH-AES256-SHA bits=256 verify=NO) for <dime@ietf.org>; Wed, 29 Oct 2014 11:52:16 -0500
Received: from PLSWE13M08.ad.sprint.com (plswe13m08.corp.sprint.com [144.229.214.27]) by pdaasen2.corp.sprint.com (Sentrion-MTA-4.3.0/Sentrion-MTA-4.3.0) with ESMTP id s9TGqGok005752 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL) for <dime@ietf.org>; Wed, 29 Oct 2014 11:52:16 -0500
Received: from PLSWE13M07.ad.sprint.com (2002:90e5:d61a::90e5:d61a) by PLSWE13M08.ad.sprint.com (2002:90e5:d61b::90e5:d61b) with Microsoft SMTP Server (TLS) id 15.0.847.32; Wed, 29 Oct 2014 11:52:15 -0500
Received: from PLSWE13M07.ad.sprint.com ([fe80::b8a7:9769:a6fe:384c]) by PLSWE13M07.ad.sprint.com ([fe80::b8a7:9769:a6fe:384c%15]) with mapi id 15.00.0847.030; Wed, 29 Oct 2014 11:52:15 -0500
From: "Bertz, Lyle T [CTO]" <Lyle.T.Bertz@sprint.com>
To: "dime@ietf.org" <dime@ietf.org>
Thread-Topic: New version notification for draft-ietf-dime-congestion-flow-attributes-01.txt
Thread-Index: Ac/zmFfoT6V7aDNLQpG0Oyvniz/ZkQ==
Date: Wed, 29 Oct 2014 16:52:14 +0000
Message-ID: <938b341021364360b4992e07f1b1c74a@PLSWE13M07.ad.sprint.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.123.104.27]
Content-Type: multipart/alternative; boundary="_000_938b341021364360b4992e07f1b1c74aPLSWE13M07adsprintcom_"
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-Forefront-Antispam-Report: CIP:144.230.168.26; CTRY:US; IPV:CAL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(438002)(164054003)(199003)(189002)(106466001)(108616004)(16236675004)(6806004)(31966008)(44976005)(2501002)(19617315012)(4396001)(19300405004)(68736004)(85306004)(33646002)(84326002)(2656002)(77096002)(84676001)(19580395003)(230783001)(71186001)(512954002)(15975445006)(15202345003)(86362001)(120916001)(229853001)(21056001)(92566001)(107046002)(99396003)(85852003)(2351001)(107886001)(30436002)(64706001)(20776003)(87936001)(97736003)(95666004)(76482002)(19625215002)(46102003)(110136001)(50986999)(54356999)(26826002)(80022003)(4546003)(24736002); DIR:OUT; SFP:1102; SCL:1; SRVR:BL2FFO11HUB055; H:plsasdm2.corp.sprint.com; FPR:; MLV:ovrnspm; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; 
X-Microsoft-Antispam: UriScan:;
X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:;SRVR:BL2FFO11HUB055;
X-Exchange-Antispam-Report-Test: UriScan:;
X-Forefront-PRVS: 03793408BA
Received-SPF: Pass (protection.outlook.com: domain of sprint.com designates 144.230.168.26 as permitted sender) receiver=protection.outlook.com; client-ip=144.230.168.26; helo=plsasdm2.corp.sprint.com;
Authentication-Results: spf=pass (sender IP is 144.230.168.26) smtp.mailfrom=Lyle.T.Bertz@sprint.com; 
X-OriginatorOrg: sprint.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/dLIHb2BKh7YVkX85oygQeJuMqWI
Subject: [Dime] New version notification for draft-ietf-dime-congestion-flow-attributes-01.txt
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 16:52:42 -0000

--_000_938b341021364360b4992e07f1b1c74aPLSWE13M07adsprintcom_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

All,

An update to has been made to the draft (https://www.ietf.org/internet-draf=
ts/draft-ietf-dime-congestion-flow-attributes-01.txt).  Only examples were =
added to the document.

Comments are welcome.

Thanks,

Lyle

________________________________

This e-mail may contain Sprint proprietary information intended for the sol=
e use of the recipient(s). Any use by others is prohibited. If you are not =
the intended recipient, please contact the sender and delete all copies of =
the message.

--_000_938b341021364360b4992e07f1b1c74aPLSWE13M07adsprintcom_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">All,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">An update to has been made to the draft (<a href=3D"=
https://www.ietf.org/internet-drafts/draft-ietf-dime-congestion-flow-attrib=
utes-01.txt">https://www.ietf.org/internet-drafts/draft-ietf-dime-congestio=
n-flow-attributes-01.txt</a>).&nbsp; Only
 examples were added to the document.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Comments are welcome.<o:p></o:p></p>
<p class=3D"MsoNormal"><br>
Thanks,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Lyle<o:p></o:p></p>
</div>
<br>
<hr>
<font face=3D"Arial" color=3D"Gray" size=3D"1"><br>
This e-mail may contain Sprint proprietary information intended for the sol=
e use of the recipient(s). Any use by others is prohibited. If you are not =
the intended recipient, please contact the sender and delete all copies of =
the message.<br>
</font>
</body>
</html>

--_000_938b341021364360b4992e07f1b1c74aPLSWE13M07adsprintcom_--


From nobody Wed Oct 29 12:16:37 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B8DA31A892E for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 12:16:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sibCQ5RdMUPR for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 12:16:32 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DB6571A8928 for <dime@ietf.org>; Wed, 29 Oct 2014 12:16:32 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:63890 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XjYjP-0001Kl-3H for dime@ietf.org; Wed, 29 Oct 2014 12:16:31 -0700
Message-ID: <54513D0E.3050201@usdonovans.com>
Date: Wed, 29 Oct 2014 14:16:30 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/AcLrjJsyiBEv48GPHIjZrYm9yw4
Subject: [Dime] DOIC work remaining
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 19:16:34 -0000

All,

Thanks to everyone who has helped with the generation of the -04 version 
of the DOIC specification .  Hopefully we're getting close.

As a reminder, the goal is to have a version of the draft ready for 
working group last call shortly after the Honolulu IETF meeting.

I see the following items remaining:

- As many end-to-end scrubs of the -04 draft as people have time to do.

- Focused review of the security section.

- Closing issue #58 - We have the following options.  The default option 
is the first.

   1 -  Do nothing, leaving the wording that says the DOIC solution 
assumes a single source for realm reports
   2 -  Come to consensus on wording for either the synchronized 
sequence number or OC-SourceID alternatives

- Close the remaining Editor's Notes in the document.

   - Section 4.1.3 Agent Behavior subsection of Capability Announcement 
section, dealing with wording around agent changing 
OC-Supported-Features header in request messages.

   - Section 4.2.3 Reporting Node Behavior of Overload Report Handling 
section, this is for issue 58.

   - Section 6.5 Oc-Validity-Duration AVP - Question of whether there 
should be an explicit maximum value.

We can create a new version of the draft prior to the start of the IETF 
meeting if needed.

See y'all in Hawaii.

Aloha,

Steve


From nobody Wed Oct 29 12:29:39 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 09C2B1A898A for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 12:29:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pGlR4K3MvQ8d for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 12:29:33 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F0FE91A8989 for <dime@ietf.org>; Wed, 29 Oct 2014 12:29:32 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:63958 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XjYvy-0000oT-Q1 for dime@ietf.org; Wed, 29 Oct 2014 12:29:31 -0700
Message-ID: <5451401A.3050308@usdonovans.com>
Date: Wed, 29 Oct 2014 14:29:30 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: dime@ietf.org
References: <54513D0E.3050201@usdonovans.com>
In-Reply-To: <54513D0E.3050201@usdonovans.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/iZgUeHllKSJDgwLAvNmHv6Kp-Wo
Subject: Re: [Dime] DOIC work remaining
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 19:29:34 -0000

One other work item that I missed -- Ben sent his first take on 
conformance to requirements in RFC7068.  There is an empty Appendix 
waiting for the results of this analysis.

Steve

On 10/29/14, 2:16 PM, Steve Donovan wrote:
> All,
>
> Thanks to everyone who has helped with the generation of the -04 
> version of the DOIC specification .  Hopefully we're getting close.
>
> As a reminder, the goal is to have a version of the draft ready for 
> working group last call shortly after the Honolulu IETF meeting.
>
> I see the following items remaining:
>
> - As many end-to-end scrubs of the -04 draft as people have time to do.
>
> - Focused review of the security section.
>
> - Closing issue #58 - We have the following options.  The default 
> option is the first.
>
>   1 -  Do nothing, leaving the wording that says the DOIC solution 
> assumes a single source for realm reports
>   2 -  Come to consensus on wording for either the synchronized 
> sequence number or OC-SourceID alternatives
>
> - Close the remaining Editor's Notes in the document.
>
>   - Section 4.1.3 Agent Behavior subsection of Capability Announcement 
> section, dealing with wording around agent changing 
> OC-Supported-Features header in request messages.
>
>   - Section 4.2.3 Reporting Node Behavior of Overload Report Handling 
> section, this is for issue 58.
>
>   - Section 6.5 Oc-Validity-Duration AVP - Question of whether there 
> should be an explicit maximum value.
>
> We can create a new version of the draft prior to the start of the 
> IETF meeting if needed.
>
> See y'all in Hawaii.
>
> Aloha,
>
> Steve
>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
>


From nobody Wed Oct 29 13:54:12 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F3C521A8ADC for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 13:54:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id atwBbKb7euwK for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 13:54:09 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A05321A8AD3 for <dime@ietf.org>; Wed, 29 Oct 2014 13:54:09 -0700 (PDT)
Received: from localhost ([::1]:59230 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XjaFq-0007h0-MO; Wed, 29 Oct 2014 13:54:06 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-docdt-dime-ovli@tools.ietf.org, ben@nostrum.com
X-Trac-Project: dime
Date: Wed, 29 Oct 2014 20:54:06 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/86
Message-ID: <057.0707e4d881bcc9f664ab48273afb2213@trac.tools.ietf.org>
X-Trac-Ticket-ID: 86
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-docdt-dime-ovli@tools.ietf.org, ben@nostrum.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/wVuoruIl1pWm6ekXgFOiBbCmLA0
Cc: dime@ietf.org
Subject: [Dime] [dime] #86 (draft-docdt-dime-ovli): Need Requirements Analysis
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 20:54:11 -0000

#86: Need Requirements Analysis

 Benoit asked us to include an analysis of how we meet the RFC7068
 requirements. Ben has proposed text on the list. We need to discuss that
 text, and incorporate the results.

-- 
-------------------------+-------------------------------------------------
 Reporter:               |      Owner:  draft-docdt-dime-
  ben@nostrum.com        |  ovli@tools.ietf.org
     Type:  task         |     Status:  new
 Priority:  major        |  Milestone:  milestone1
Component:  draft-       |    Version:
  docdt-dime-ovli        |   Keywords:
 Severity:  Active WG    |
  Document               |
-------------------------+-------------------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/86>
dime <http://tools.ietf.org/wg/dime/>


From nobody Wed Oct 29 13:55:58 2014
Return-Path: <trac+dime@trac.tools.ietf.org>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8AACE1A8AE3 for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 13:55:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level: 
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Rjkaxa1AinSm for <dime@ietfa.amsl.com>; Wed, 29 Oct 2014 13:55:55 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (zinfandel.tools.ietf.org [IPv6:2001:1890:123a::1:2a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3A1F21A8AEA for <dime@ietf.org>; Wed, 29 Oct 2014 13:55:55 -0700 (PDT)
Received: from localhost ([::1]:59352 helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <trac+dime@trac.tools.ietf.org>) id 1XjaHa-00088L-9P; Wed, 29 Oct 2014 13:55:54 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: "dime issue tracker" <trac+dime@trac.tools.ietf.org>
X-Trac-Version: 0.12.3
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.12.3, by Edgewall Software
To: draft-docdt-dime-ovli@tools.ietf.org, ben@nostrum.com
X-Trac-Project: dime
Date: Wed, 29 Oct 2014 20:55:54 -0000
X-URL: http://tools.ietf.org/wg/dime/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/dime/trac/ticket/87
Message-ID: <057.41b6354583a1406cbadde728b3f7ce55@trac.tools.ietf.org>
X-Trac-Ticket-ID: 87
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: draft-docdt-dime-ovli@tools.ietf.org, ben@nostrum.com, dime@ietf.org
X-SA-Exim-Mail-From: trac+dime@trac.tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Resent-To: ben@nostrum.com, jouni.nospam@gmail.com, srdonovan@usdonovans.com
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/ZLNCiPxE02ixnaTF13WMU_nL2NY
Cc: dime@ietf.org
Subject: [Dime] [dime] #87 (draft-docdt-dime-ovli): Security Considerations Out of Date
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Reply-To: dime@ietf.org
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Oct 2014 20:55:56 -0000

#87: Security Considerations Out of Date

 The security considerations have not been updated to reflect changes
 elsewhere. Some issues may no longer reply. We need to revise the text in
 that section.

-- 
-------------------------+-------------------------------------------------
 Reporter:               |      Owner:  draft-docdt-dime-
  ben@nostrum.com        |  ovli@tools.ietf.org
     Type:  defect       |     Status:  new
 Priority:  major        |  Milestone:
Component:  draft-       |    Version:
  docdt-dime-ovli        |   Keywords:
 Severity:  Active WG    |
  Document               |
-------------------------+-------------------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/dime/trac/ticket/87>
dime <http://tools.ietf.org/wg/dime/>


From nobody Fri Oct 31 05:42:21 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B5F191A8730 for <dime@ietfa.amsl.com>; Fri, 31 Oct 2014 05:42:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.579
X-Spam-Level: *
X-Spam-Status: No, score=1.579 tagged_above=-999 required=5 tests=[BAYES_50=0.8, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hOyWoOiRv1Dy for <dime@ietfa.amsl.com>; Fri, 31 Oct 2014 05:42:17 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 245AC1A0056 for <dime@ietf.org>; Fri, 31 Oct 2014 05:42:15 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:61754 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XkBWv-000CDS-6J for dime@ietf.org; Fri, 31 Oct 2014 05:42:14 -0700
Message-ID: <545383A4.7070707@usdonovans.com>
Date: Fri, 31 Oct 2014 07:42:12 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: dime@ietf.org
References: <087A34937E64E74E848732CFF8354B9209852157@ESESSMB101.ericsson.se> <5BCBA1FC2B7F0B4C9D935572D900066815218E40@DEMUMBX014.nsn-intra.net> <F9B1EDDC-BE6F-47AF-83E5-657833A3B197@gmail.com>
In-Reply-To: <F9B1EDDC-BE6F-47AF-83E5-657833A3B197@gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/RiN7DduNTKdQOXIGA-7xFbybSsw
Subject: Re: [Dime] -04 review
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 31 Oct 2014 12:42:19 -0000

This change will show up in the next revision of -05.

Regards,

Steve

On 10/26/14, 4:40 PM, Jouni wrote:
> Ulrich,
>
>     Figure 1 illustrates the simplified architecture for Diameter
>     overload information conveyance.
>   
>   
>      Realm X                                  Same or other Realms
>     <--------------------------------------> <---------------------->
>   
>   
>        +--^-----+                 : (optional) :
>        |Diameter|                 :            :
>        |Server A|--+     .--.     : +---^----+ :     .--.
>        +--------+  |   _(    `.   : |Diameter| :   _(    `.   +---^----+
>                    +--(        )--:-|  Agent |-:--(        )--|Diameter|
>        +--------+  | ( `  .  )  ) : +-----^--+ : ( `  .  )  ) | Client |
>        |Diameter|--+  `--(___.-'  :            :  `--(___.-'  +-----^--+
>        |Server B|                 :            :
>        +---^----+                 :            :
>   
>                            End-to-end Overload Indication
>               1)  <----------------------------------------------->
>                               Diameter Application Y
>   
>                    Overload Indication A    Overload Indication A'
>               2)  <----------------------> <---------------------->
>                   standard base protocol   standard base protocol
>   
>   
>   
>       Figure 1: Simplified architecture choices for overload indication
>                                   delivery
>   
>     In Figure 1, the Diameter overload indication can be conveyed (1)
>     end-to-end between servers and clients or (2) between servers and
>     Diameter agent inside the realm and then between the Diameter agent
>     and the clients[UW1] .
>
> [UW1] I guess I do not fully understand case (2) by "standard base protocol" you mean CER/CEA and DWR/DWA ??
>
> Not necessarily. It can be, though. The "standard base protocol" should be replaced with "Diameter Application Y".
>
> - Jouni
>
>
>
>
>
>
> On Oct 25, 2014, at 3:32 PM, Wiehe, Ulrich (NSN - DE/Munich) wrote:
>
>> Steve,
>>   
>> please find my comments attached.
>>   
>> Best regards
>> Ulrich
>> <04-review UW.docx>
> _______________________________________________
> DiME mailing list
> DiME@ietf.org
> https://www.ietf.org/mailman/listinfo/dime
>


From nobody Fri Oct 31 09:22:35 2014
Return-Path: <srdonovan@usdonovans.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6B5791ACD32 for <dime@ietfa.amsl.com>; Fri, 31 Oct 2014 09:22:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.58
X-Spam-Level: *
X-Spam-Status: No, score=1.58 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HTML_MESSAGE=0.001, SPF_NEUTRAL=0.779] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YVTK3EPcvSbc for <dime@ietfa.amsl.com>; Fri, 31 Oct 2014 09:22:32 -0700 (PDT)
Received: from biz131.inmotionhosting.com (biz131.inmotionhosting.com [74.124.197.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DD4D51ACD41 for <dime@ietf.org>; Fri, 31 Oct 2014 09:22:32 -0700 (PDT)
Received: from cpe-76-187-100-94.tx.res.rr.com ([76.187.100.94]:61839 helo=Steves-MacBook-Air-2.local) by biz131.inmotionhosting.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82) (envelope-from <srdonovan@usdonovans.com>) id 1XkEy3-00049I-Mf for dime@ietf.org; Fri, 31 Oct 2014 09:22:29 -0700
Message-ID: <5453B740.40500@usdonovans.com>
Date: Fri, 31 Oct 2014 11:22:24 -0500
From: Steve Donovan <srdonovan@usdonovans.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: "dime@ietf.org" <dime@ietf.org>
Content-Type: multipart/alternative; boundary="------------060207040404010609070203"
X-OutGoing-Spam-Status: No, score=-2.9
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - biz131.inmotionhosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - usdonovans.com
X-Get-Message-Sender-Via: biz131.inmotionhosting.com: authenticated_id: srd+usdonovans.com/only user confirmed/virtual account not confirmed
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/nnjI2VZMEl1MD4WrGxVnniOt7Us
Subject: [Dime] Review of draft-ietf-dime-group-signaling-04.txt
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 31 Oct 2014 16:22:34 -0000

This is a multi-part message in MIME format.
--------------060207040404010609070203
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

The following are my comments and questions resulting from a review of 
draft-ietf-dime-group-signaling-04.txt

General comments:

- The draft uses the term Diameter peer frequently in a way that does 
not seem to be correct.  A Diameter peer is defined to be a Diameter 
node with a direct connection.  The group signaling mechanism doesn't 
depend on communicating with a true Diameter peer.  It would be better 
to have a different term.

- The document might flow better if capability discovery was discussed 
before the session grouping logic, as session grouping depends on 
capability discovery.  Just a personal preference.

- Are there use cases identified that require supporting a session being 
in an unlimited number of session groups?  This is probably an 
application specification issue, but putting a session in multiple 
groups appears to be pretty complicated to manage if all of the sessions 
in a group need to be in the same "application session state".

- It seems dangerous to not allow a server to reject new group 
assignments.  What happens if the server is out of resources for 
managing groups?

Table in section 3.0

- First operation - Why is the peer the owner of the group, I thought 
the creator is the owner of the group.
- Seventh operation - Why is this needed?  Isn't this the same as 
operation six.
- Eighth operation - Similar question.
- Last operation - If I can delete all sessions in a group owned by my 
peer, why can't I just delete the session group as a whole?

Section 4.1.1

- Isn't server creation of Session Groups dependent on the client 
supporting session groups?

- Paragraph 5 - Shouldn't it also be possible for the server to create 
groups even if the client creates none (assuming the client supports 
groups)?

- Second to last paragraph is not needed.  A server that is RFC6733 
compliant will always do as this says.

- The last paragraph indicates how clients fall back to doing single 
session commands.  There doesn't seem to be a mechanism for a server to 
do the same.

Section 4.4

- The processing implies that the requested operation is applied to all 
sessions in all specified groups before an answer is sent.  How likely 
is this to cause transactions to time-out and be retried?

Section 5

- Second paragraph - Why MUST the proxy maintain consistency of session 
groups between clients and servers?  What if the session groups are only 
meaningful between the client and the proxy?

That's all for now.

Regards,

Steve

--------------060207040404010609070203
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    The following are my comments and questions resulting from a review
    of draft-ietf-dime-group-signaling-04.txt
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    <br>
    <br>
    General comments:<br>
    <br>
    - The draft uses the term Diameter peer frequently in a way that
    does not seem to be correct.&nbsp; A Diameter peer is defined to be a
    Diameter node with a direct connection.&nbsp; The group signaling
    mechanism doesn't depend on communicating with a true Diameter
    peer.&nbsp; It would be better to have a different term.<br>
    <br>
    - The document might flow better if capability discovery was
    discussed before the session grouping logic, as session grouping
    depends on capability discovery.&nbsp; Just a personal preference.<br>
    <br>
    - Are there use cases identified that require supporting a session
    being in an unlimited number of session groups?&nbsp; This is probably an
    application specification issue, but putting a session in multiple
    groups appears to be pretty complicated to manage if all of the
    sessions in a group need to be in the same "application session
    state".<br>
    <br>
    - It seems dangerous to not allow a server to reject new group
    assignments.&nbsp; What happens if the server is out of resources for
    managing groups?<br>
    <br>
    Table in section 3.0<br>
    <br>
    - First operation - Why is the peer the owner of the group, I
    thought the creator is the owner of the group.<br>
    - Seventh operation - Why is this needed?&nbsp; Isn't this the same as
    operation six.<br>
    - Eighth operation - Similar question.<br>
    - Last operation - If I can delete all sessions in a group owned by
    my peer, why can't I just delete the session group as a whole?<br>
    <br>
    Section 4.1.1<br>
    <br>
    - Isn't server creation of Session Groups dependent on the client
    supporting session groups?<br>
    <br>
    - Paragraph 5 - Shouldn't it also be possible for the server to
    create groups even if the client creates none (assuming the client
    supports groups)?<br>
    <br>
    - Second to last paragraph is not needed.&nbsp; A server that is RFC6733
    compliant will always do as this says.&nbsp; <br>
    <br>
    - The last paragraph indicates how clients fall back to doing single
    session commands.&nbsp; There doesn't seem to be a mechanism for a server
    to do the same.<br>
    <br>
    Section 4.4<br>
    <br>
    - The processing implies that the requested operation is applied to
    all sessions in all specified groups before an answer is sent.&nbsp; How
    likely is this to cause transactions to time-out and be retried?<br>
    <br>
    Section 5<br>
    <br>
    - Second paragraph - Why MUST the proxy maintain consistency of
    session groups between clients and servers?&nbsp; What if the session
    groups are only meaningful between the client and the proxy?<br>
    <br>
    That's all for now.<br>
    <br>
    Regards,<br>
    <br>
    Steve<br>
  </body>
</html>

--------------060207040404010609070203--

