Subject: [IPFIX] IPFIX-CONFIG: maxPacketSize parameter for UDP export

From: Gerhard Muenz <[email-masked]>
Date: Fri, 05 Mar 2010 14:32:17 +0100

Dear all,

I've missed a configuration issue mentioned in RFC5101:

10.3.3. MTU

    The maximum size of exported messages MUST be configured such that
    the total packet size does not exceed the path MTU.  If the path MTU
    is unknown, a maximum packet size of 512 octets SHOULD be used.

Although the text mentions the configuration of the IPFIX Message size, 
I think that it makes more sense to configure the maximum packet size 
(including IP and UDP header).

So, I propose to add a maxPacketSize parameter to the Destination class:

    +--------------------------------------------------+
    | Destination                                      |
    +--------------------------------------------------+
    | name                                             |<>-----+
    | exportMemberType = parallel                      |       | 0..1
    | ipfixVersion = 10                                |       |
    | transportProtocol                                |   +------------+
    | sourceIpAddress[0..*] {[0..1] for UDP and TCP}   |   | Transport- |
    | destinationIpAddress[1..*] {[1] for UDP and TCP} |   | Layer-     |
    | destinationPort = 4739|4740                      |   | Security   |
    | ifName/ifIndex[0..1]                             |   +------------+
    | sendBufferSize {opt.}                            |
    | rateLimit[0..1]                                  |
    | timedReliability = 0 {SCTP only}                 |
    | numberOfStreams {opt.} {SCTP only}               |
=> | maxPacketSize[0..1] {UDP only}                   |
    | templateRefreshTimeout = 600 {UDP only}          |
    | optionsTemplateRefreshTimeout = 600 {UDP only}   |
    | templateRefreshPacket[0..1] {UDP only}           |
    | optionsTemplateRefreshPacket[0..1] {UDP only}    |
    +--------------------------------------------------+

    maxPacketSize:  This parameter allow the user to specify the maximum
       size of packets sent to the Collector.  If configured, the user
       MUST ensure that the parameter value does not exceed the path MTU.
       If not configured, the Exporting Process MAY derive the maximum
       packet size from path MTU discovery mechanisms.  Otherwise, the
       packet size MUST not exceed 512 octets as specified in [RFC5101].

Please let me know if you like the parameter description.

I have noticed that path MTU discovery for UDP is not yet mentioned in 
any IPFIX documents. Not sure, if it is ok to mention it here.

Gerhard

-- 
Dipl.-Ing. Gerhard Münz
Chair for Network Architectures and Services (I8)
Technische Universität München - Department of Informatics
Boltzmannstr. 3, 85748 Garching bei München, Germany
Phone:  +49 89 289-18008       Fax: +49 89 289-18033
E-mail: [email-masked]    WWW: http://www.net.in.tum.de/~muenz

---

From: "Romascanu, Dan (Dan)" <[email-masked]>
Date: Sun, 7 Mar 2010 10:38:20 +0100

RFC 5101 states the requirement as a SHOULD. Why do you propose to turn it into a MUST? 

Thanks and Regards,

Dan

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] 
> On Behalf Of Gerhard Muenz
> Sent: Friday, March 05, 2010 3:32 PM
> To: [email-masked]
> Cc: Daniel Mentz
> Subject: [IPFIX] IPFIX-CONFIG: maxPacketSize parameter for UDP export
> 
> 
> Dear all,
> 
> Although the text mentions the configuration of the IPFIX 
> Message size, I think that it makes more sense to configure 
> the maximum packet size (including IP and UDP header).
> 
> I have noticed that path MTU discovery for UDP is not yet 
> mentioned in any IPFIX documents. Not sure, if it is ok to 
> mention it here.
> 
> Gerhard
> 
> 
> --
> Dipl.-Ing. Gerhard Münz
> Chair for Network Architectures and Services (I8) Technische 
> Universität München - Department of Informatics Boltzmannstr. 
> 3, 85748 Garching bei München, Germany

---

From: Gerhard Muenz <[email-masked]>
Date: Mon, 08 Mar 2010 10:07:58 +0100

Dear Dan, all,

Thanks for starting the discussion about this parameter.

> RFC 5101 states the requirement as a SHOULD. Why do you propose to turn it into a MUST? 

The SHOULD in RFC 5101 and the MUST in IPFIX-CONFIG refer to different 
things.

I see
   "If the path MTU is unknown, a maximum packet size of 512 octets
    SHOULD be used" [RFC5101]
as a recommendation to the user:
If the user does not know the PMTU, he should configure
maxPacketSize = 512. He may configure maxPacketSize = 1400, though.

I want to specify how the Monitoring Device behaves if the maxPacketSize 
parameter is not configured by the user.

There are several possibilities how to do that. Here are three of them:

1) We specify a default value in IPFIX-CONFIG.
2) The devices configures the parameter value (like other parameters
    marked "{opt.} in UML).
3) We specify that the absence of maxPacketSize instructs the device
    to use PMTU discovery or 512 bytes.

Among the three options, only 3) allows using PMTU discovery.

1) is not good because it disallows PMTU discovery. And the default 
value would have to be 512.

2) means that the device configures maxPacketSize right after the user 
configures the Exporting Process without setting maxPacketSize. 
Thereafter, the device is expected not to change the parameter. Thus, 2) 
is incompatible with PMTU discovery as well because PMTU discovery may 
lead to changing PMTU estimates.

I would appreciate to hear more opinions. Maybe somebody has a better 
solution.

Apart from the configuration parameter, it could be useful to have a 
state parameter which allows the user to query the PMTU estimate for a 
UDP Transport Session if PMTU discovery is deployed.

Regards,
Gerhard

---

From: Brian Trammell <[email-masked]>
Date: Mon, 8 Mar 2010 10:23:06 +0100

Hi, Gerhard, all,

I would propose 3a. The absence of maxPacketSize instructs the device to use PMTU discovery if supported, or the device default if not. The device default SHOULD be 512 bytes as per [RFC5101].

It has all the advantages of your approach, plus it doesn't supercede a SHOULD with a MUST.

Thoughts?

Cheers,

Brian

On Mar 8, 2010, at 10:07 AM, Gerhard Muenz wrote:

> The SHOULD in RFC 5101 and the MUST in IPFIX-CONFIG refer to different things.
> 
> I see
> I want to specify how the Monitoring Device behaves if the maxPacketSize parameter is not configured by the user.
> 
> 1) is not good because it disallows PMTU discovery. And the default value would have to be 512.
> 
> 2) means that the device configures maxPacketSize right after the user configures the Exporting Process without setting maxPacketSize. Thereafter, the device is expected not to change the parameter. Thus, 2) is incompatible with PMTU discovery as well because PMTU discovery may lead to changing PMTU estimates.
> 
> I would appreciate to hear more opinions. Maybe somebody has a better solution.
> 
> Apart from the configuration parameter, it could be useful to have a state parameter which allows the user to query the PMTU estimate for a UDP Transport Session if PMTU discovery is deployed.
> 
> Regards,
> Gerhard
> 
> 
>> Thanks and Regards,
>> Dan
>> 
>>> From: [email-masked] [mailto:[email-masked]] On Behalf Of Gerhard Muenz
>>> Although the text mentions the configuration of the IPFIX Message size, I think that it makes more sense to configure the maximum packet size (including IP and UDP header).
>>> 
>>> I have noticed that path MTU discovery for UDP is not yet mentioned in any IPFIX documents. Not sure, if it is ok to mention it here.
>>> 
>>> Gerhard
>>> 
> 
> _______________________________________________
> IPFIX mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/ipfix

---

From: Gerhard Muenz <[email-masked]>
Date: Mon, 08 Mar 2010 10:53:56 +0100

Hi Brian,

> It has all the advantages of your approach, plus it doesn't supercede a SHOULD with a MUST.

This is possible as well.

The question is how we communicate to the user a) which value is used 
and b) whether this value is a device-specific default or the result of 
PMTU discovery.

Here is one possible solution:

    maxPacketSize {opt.} {UDP only}

    maxPacketSize:  This parameter specifies the maximum size of packets
       sent to the Collector.  If set to zero, the Exporting Device MUST
       derive the maximum packet size from path MTU discovery mechanisms.
       If not configured by the user, the Monitoring Process sets this
       parameter.

So, if the user configures maxPacketSize = 0, the device MUST use PMTU 
discovery. If not supported by the device, the configuration fails.

If the user does not configure maxPacketSize, the device MAY set 
maxPacketSize = 0, which means that PMTU discovery is used. Or it sets a 
non-zero value, which is a device default.

Cheers,
Gerhard

---

From: Brian Trammell <[email-masked]>
Date: Mon, 8 Mar 2010 10:54:46 +0100

Hi, Gerhard,

Yep, this looks even better.

Cheers,

Brian

On Mar 8, 2010, at 10:53 AM, Gerhard Muenz wrote:

> The question is how we communicate to the user a) which value is used and b) whether this value is a device-specific default or the result of PMTU discovery.
> 
> So, if the user configures maxPacketSize = 0, the device MUST use PMTU discovery. If not supported by the device, the configuration fails.
> 
> If the user does not configure maxPacketSize, the device MAY set maxPacketSize = 0, which means that PMTU discovery is used. Or it sets a non-zero value, which is a device default.
> 
> Cheers,
> Gerhard
> 
>> Cheers,
>> Brian