Re: [BEHAVE] Out of port errors, resource errors in NAT MIB

JF Tremblay <jean-francois.tremblay@viagenie.ca> Tue, 28 October 2014 16:00 UTC

Return-Path: <jean-francois.tremblay@viagenie.ca>
X-Original-To: behave@ietfa.amsl.com
Delivered-To: behave@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 356731A8AEA; Tue, 28 Oct 2014 09:00:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-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 SnHFa7MkN9pa; Tue, 28 Oct 2014 09:00:47 -0700 (PDT)
Received: from jazz.viagenie.ca (jazz.viagenie.ca [IPv6:2620:0:230:8000::2]) by ietfa.amsl.com (Postfix) with ESMTP id 201891A8F3D; Tue, 28 Oct 2014 09:00:40 -0700 (PDT)
Received: from h200.viagenie.ca (h200.viagenie.ca [206.123.31.200]) by jazz.viagenie.ca (Postfix) with ESMTPSA id 6AFCA40396; Tue, 28 Oct 2014 12:00:39 -0400 (EDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
From: JF Tremblay <jean-francois.tremblay@viagenie.ca>
In-Reply-To: <544EEFEA.5040801@gmail.com>
Date: Tue, 28 Oct 2014 12:00:39 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <ABF57D17-B040-4142-8369-E62B4F263A2A@viagenie.ca>
References: <544D772F.6060009@gmail.com> <CANO7kWCNnXN-+nzaygANpiXFcHxCepUiG3V9NLVaPDRoPjkHzw@mail.gmail.com> <544EEFEA.5040801@gmail.com>
To: "behave@ietf.org" <behave@ietf.org>
X-Mailer: Apple Mail (2.1990.1)
Archived-At: http://mailarchive.ietf.org/arch/msg/behave/Q16eFVWXuYSsgPOT0YQIP4lq-TY
Cc: "opsawg@ietf.org" <opsawg@ietf.org>
Subject: Re: [BEHAVE] Out of port errors, resource errors in NAT MIB
X-BeenThere: behave@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: mailing list of BEHAVE IETF WG <behave.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/behave>, <mailto:behave-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/behave/>
List-Post: <mailto:behave@ietf.org>
List-Help: <mailto:behave-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/behave>, <mailto:behave-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Oct 2014 16:00:57 -0000

> On Oct 27, 2014, at 9:22 PM, Tom Taylor <tom.taylor.stds@gmail.com> wrote:
> 
> Leaving aside the notification question for research, the discussion below suggests that the boundary between port exhaustion and address exhaustion is somewhat indeterminate. The MIB currently has two counters (showing up in various tables, another issue), OutOfPortErrors and ResourceErrors, with the latter supposedly picking up address exhaustion. I'd suggest we make the first one OutOfAddressPortErrors and thereby eliminate the ambiguity. I'd also call these Drops rather than Errors to make the consequences clearer.

+1 
I believe it’s useful for a NAT operator to differentiate between these types of errors. 

As Tom mentioned, we shouldn’t dwelve* in implementation-specific details, but the MIB should provide enough flexibility to express real-life error conditions in a meaningful way. Where meaningful == clear enough for an operation person not to have to dig the MIB definition at 2:00 in the morning to figure out which problem needs fixing. 

This begs the question: are these objects sufficient and aptly named in the MIB to reach the goal above? 

Let’s take a few examples of real-life CGN error cases (they are fairly common in my experience, but your-experience-may-vary-of-course): 
1. Out-of-ports because an administrative limit of port-per-user is reached. 
2. Out-of-ports because a single address doesn’t have enough available ports and address “pairing” is enforced. 
3. Out-of-ports/addresses because all addresses in all configured pools do not have enough available ports. 
4. Out-of-addresses because an administrative limit of users per address is reached on all addresses of all configured pools.   
(in the above, “user” is loosely used as meaning a single inside source address)

MIB behaviour (in my opinion): 
1. natQuotaDrops incremented
2. Is natQuotaDrops or natOutOfPortErrors incremented? The MIB prohibits incrementing both. natOutOfPortsError would probably be preferable. 
3. natOutOfAddressPortErrors incremented
4. natQuotaDrops incremented (probably)

Note that natResourceErrors isn’t used above, but it’s probably useful to keep it as it is now. 

Possible corrective actions: 
a) Add addresses to currently configured pools: cases 3 and 4
b) Review the administrative boundaries policies (long term action): cases 2 and 4

In this light, Tom’s suggestion of adding natOutOfAddressesPortErrors is definitely useful, as it covers case 3 well and provides a way to differentiate it from case 1. However the current fields might not be sufficient to cover all cases, like differentiating cases 1 and 4 above. This might be left to implementation-dependant enterprise MIBs, but it would have been nice to have enough coverage in the standard MIB for most common cases. 

Suggestion: 
natQuotaDrops could be split in natAddressQuotaDrops and natPortsQuotaDrops. It would make it somewhat clearer that a "per port” or a “per address” policy is involved. 

My 2.302 cents (the exchange rate isn’t what it used to be) 

/JF


* I just learned that “dwelve” isn’t a real word after all. Interesting, I’ll go to sleep a little less idiot tonight (loose translation of a local expression).