> On 13 Dec 2016, at 11:05, Gorry Fairhurst <[email protected]> wrote:
> 
> On 13/12/2016 09:13, Michael Welzl wrote:
>> Hi,
>> 
>> This direction definitely makes sense to me, too. I see some tension here, 
>> though - on the one hand, Joe is (as usual) arguing "cleanliness", i.e. keep 
>> layering right. On the other hand, applications tend to want to know a 
>> message size that doesn't get fragmented along an IPv4 path (as identified 
>> by the authors of draft-trammell-post-sockets and 
>> draft-mcquistin-taps-low-latency-services).
>> Raising the abstraction level is fine, but I think Joe's suggestion below 
>> misses something.
>> 
>> In an earlier email, Joe wrote about these two sizes:
>> 
>> ***
>> 1) the size of the message that CAN be delivered at all
>> 
>> 2) the size of the message that can be delivered without network-layer
>> fragmentation
>> ***
>> and stated that 2) should not be exposed.
>> 
>> So, in the proposal below, "largest transmission size" is 1) from above, and 
>> sending it would fail if it's bigger than 2) above AND "native transmission 
>> desired" is set to TRUE. So this is how the application would then do its 
>> own form of PMTUD.
>> 
>> Given that we don't know which protocol we're running over, probing 
>> strategies that involve common MTU sizes (like using the table in section 
>> 7.1 of RFC1191) can't work. So it's not the world's most efficient PMTUD 
>> that applications will be using, to eventually find the value of 2).
>> A protocol like SCTP is even going to do PMTUD on its own, so it could 
>> provide a number for 2), which would have less overhead than requiring 
>> applications to do their own PMTUD.  =>   If we have to "go dirty" anyway, 
>> which we already do by exposing the binary "native transmission desired", 
>> why not offer the value of 2) as well?
>> In other words: how is this boolean better than offering 2) ?
>> 
>> Cheers,
>> Michael
>> 
>> 
>> 
>>> On 12 Dec 2016, at 21:53, Gorry (erg)<[email protected]>  wrote:
>>> 
>>> This is fine - it looks a like what I pointed to in the DCCP spec. But 
>>> specifically,  I agree you don't need the DF flag visible - if you have a 
>>> way to convey the info needed to set the flag at the transport (and 
>>> anything else appropriate -as you note). I am all in favour of such 
>>> appropriate abstraction.
>>> 
>>> Gorry
>>> 
>>>> On 12 Dec 2016, at 19:09, Joe Touch<[email protected]>  wrote:
>>>> 
>>>>> On 12/12/2016 10:58 AM, Gorry Fairhurst wrote:
>>>>>> IMO, the app should never need to play with DF. It needs to know what it
>>>>>> thinks the transport can deliver - which might include transport
>>>>>> frag/reassembly and network frag/reassembly.
>>>>> How does the App handle probes for path MTU then in UDP?
>>>>> 
>>>>> Gorry
>>>> I think there needs to be two parts to the API:
>>>> 
>>>> - largest transmission size
>>>> - native transmission desired (true/false)
>>>> 
>>>> If the app says "YES" to native transmission size, then that would suggest 
>>>> that UDP would do *nothing* and pass that same kind of flag down to IP, 
>>>> where IP would not only set DF=1, but also not source fragment.
>>>> 
>>>> I.e., I don't think it's the app's job to know how to explicitly control a 
>>>> mechanism two layers down, and DF isn't really what you want anyway. DF 
>>>> isn't the same as "don't source fragment".
>>>> 
>>>> Joe
>>>> _______________________________________________
>>>> Taps mailing list
>>>> [email protected]
>>>> https://www.ietf.org/mailman/listinfo/taps
>> _______________________________________________
>> Taps mailing list
>> [email protected]
>> https://www.ietf.org/mailman/listinfo/taps
> So I'd like to return to RFCs that have been through part of this discussion 
> before,
> 
> (1) I think we need a parameter returned to the App that is equivalent to 
> Maximum Packet Size, MPS, in DCCP (RFC4340). It is useful to know how many 
> bytes the app can send with reasonable chance of unfragmented delivery.

I agree; that seems to be what I ended up proposing above.


> (2) It's helpful for Apps to be able to retrieve the upper size allowed with 
> potential fragmentation - that could be useful in determinine probe sizes for 
> an application.  Apps should know the hard limt, In DCCP this is called the 
> current congestion control maximum packet size (CCMPS), the largest permitted 
> by the stack using the current congestion control method. That's bound to be 
> less than or equal to what is permitted for the local Interface MTU. This 
> limit lets the App also take into consideration other size constraints in the 
> stack below the API.

Agreed; I think that was Joe's item 1) ("the size of the message that CAN be 
delivered at all").


> (3) Apps need to be allowed to fragment datagrams more than MPS - This is not 
> expected as the default, the stack needs to be told.
> 
> (4) Apps need to be allowed to not allow datagram fragmentation - The stack 
> needs to be told. You could do this by using the DF semantics (i.e., don't 
> source fragment a DF-marked packet). Thinking more, this seems the easiest.

These two are hard to parse, making me wonder if they mean what was intended. 
E.g. for (3): applications are always allowed to fragment their data as they 
wish, right?  Did you mean to say "Apps need to be allowed to allow to fragment 
datagrams more than MPS" ?  :-)   I think so...


> Sorry, if this goes over what I said before, but I think we should first 
> explore the approaches that have already been put forward in RFCs (alebit 
> these were not RFCs about UDP).

Makes perfect sense to me. Anyway it seems (if I parse them right) that (3) and 
(4) are just Joe's "native transmission desired" boolean.

So in conclusion, IIUC, this is just a way of saying that:
your item 1: you (as I) also think we should have a "Maximum Packet Size" type 
thing in addition to what Joe said,
your items 2, 3 and 4: you (as I) agree to offer the other things that Joe also 
thinks should be offered

Right?

Cheers,
Michael

_______________________________________________
Taps mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/taps

Reply via email to