I totally agree with less API is better. > tsapi TSReturnCode TSHttpTxnClientStreamIdGet(TSHttpTxn txnp, uint64_t *stream_id);
Stripping "Http2" looks reasonable. We can use this API for protocols that have stream id. > tsapi TSReturnCode TSHttpTxnClientPriorityGet(TSHttpTxn txnp, uint64_t *stream_dependency, int *weight); I doubt removing "Http2" from this API makes sense. Because this API is assuming HTTP/2's priority scheme (dependency & weight). As Masakazu pointed out, a new priority scheme is proposed and it's completely different from HTTP/2's priority scheme. It's trying to make a priority scheme HTTP version-independent. So I'd like to leave "Http2" for this API and reserve "TSHttpTxnClientPriorityGet" for the new priority scheme. - Masaori On Tue, Sep 1, 2020 at 12:02 PM Brian Neradt <brian.ner...@gmail.com> wrote: > Thanks all, this is good feedback. It sounds like we're in agreement on > dropping the explicit reference to Http2 so this can accommodate future > protocols. Considering this and the observation that stream_id is 62 bits > for HTTP/3, the output parameters should be increased in size accordingly. > That would make the API look like the following: > > tsapi TSReturnCode TSHttpTxnClientStreamIdGet(TSHttpTxn txnp, uint64_t > *stream_id); > > tsapi TSReturnCode TSHttpTxnClientPriorityGet(TSHttpTxn txnp, uint64_t > *stream_dependency, int *weight); > > This will satisfy the Traffic Dump plugin needs. The concern raised about > protocol identification is not an issue for Traffic Dump because it will > know the protocol from either the protocol retrieval API > (TSHttpSsnClientProtocolStackGet) or from the version in the request > via TSHttpHdrVersionGet. That being the case, I'm content not adding a > separate output parameter for this. > > That said, I don't want to dismiss the option too quickly if others are > still interested. Sudheer, you seem to have the most developed ideas for > this. If, considering what I say above, you'd still like us to consider the > inclusion of a context parameter, could you please flesh out: > > - What the signatures for the stream id and priority getters would look > like. > - The structure of the context object. > - Would all HTTP/2 and above APIs contain this context parameter? > > Otherwise, if we're OK not having the context parameter, I can update the > draft PR with the above changes to the API. > > Thanks, > > On Mon, Aug 31, 2020 at 9:19 PM Sudheer Vinukonda > <sudheervinuko...@yahoo.com.invalid> wrote: > > > Right, it does make sense to have a generic API naming (and remove http2 > > reference from it), but I'm thinking it should still allow to pass in > some > > context object (we may define an interface for it, with "protocol" being > a > > mandatory field) to be able to continue using it in the future as well as > > to let user explicitly specify that they want stream id for http2 or > http2 > > for example? > > Thanks, > > Sudheer > > On Monday, August 31, 2020, 06:49:57 PM PDT, Masakazu Kitajo < > > m4s...@gmail.com> wrote: > > > > Sudheer, > > > > Would a separated API to get the actual protocol active for the given > > request satisfy you? I don't understand how indicating the actual > protocol > > helps something. > > > > I think I understand your concern. Future protocols may need different > > params, or might have different representations. However, H/2 is > extensible > > so any APIs that have "Http2" in their names still can be incompatible if > > we support extensions. The proposal for a new priority scheme is a good > > example. > > > > In that sense, passing a context object may be helpful, and more flexible > > than having fixed context in API names, but maybe it's too early to think > > about it. > > > > Masakazu > > > > > > On Mon, Aug 31, 2020 at 11:05 AM Sudheer Vinukonda > > <sudheervinuko...@yahoo.com.invalid> wrote: > > > > > Hmm, it does sound appealing to avoid having to duplicate API for > common > > > attributes between H/2 and H/3, but, I'm thinking the API should still > > > somehow explicitly indicate (either via an input param or an output > > param) > > > the actual protocol active for the given request. It seems a bit too > > > confusing (and potentially problematic depending on how things evolve > in > > > the future) to hide that aspect. > > > Thoughts? > > > > > > > > > On Sunday, August 30, 2020, 06:56:49 PM PDT, Masakazu Kitajo < > > > mas...@apache.org> wrote: > > > > > > And there is a proposal for a new priority scheme that may be used for > > > both > > > H2 and H3. > > > https://tools.ietf.org/html/draft-ietf-httpbis-priority-01 > > > > > > I haven't read it, but it would be nice if the TS API could be > compatible > > > with the new scheme. > > > > > > On Mon, Aug 31, 2020 at 10:48 AM Masakazu Kitajo <mas...@apache.org> > > > wrote: > > > > > > > I think we should avoid adding APIs just for HTTP/2 unless it's > really > > > > HTTP/2 specific. Are we going to add TSHttpTxnClientHttp3StreamIdGet > > and > > > > TSHttpTxnClientHttp3PriorityGet as well? > > > > > > > > I'd omit the "2" in the API names, and rephrase the API doc like: > > > > This API returns an error if the provided transaction does not have a > > > > stream id. > > > > > > > > Also, a stream id on HTTP/3 (QUIC) is 62 bit integer. > > > > > > > > Masakazu > > > > > > > > > > > > On Sat, Aug 29, 2020 at 5:24 AM SUSAN HINRICHS <shinr...@ieee.org> > > > wrote: > > > > > > > >> +1 > > > >> > > > >> On Fri, Aug 28, 2020 at 3:23 PM Sudheer Vinukonda > > > >> <sudheervinuko...@yahoo.com.invalid> wrote: > > > >> > > > >> > +1. > > > >> > Sounds reasonable to me. > > > >> > > > > >> > > > > >> > On Friday, August 28, 2020, 07:41:18 AM PDT, Brian Neradt < > > > >> > brian.ner...@gmail.com> wrote: > > > >> > > > > >> > Hi dev@trafficserver.apache.org, > > > >> > > > > >> > It would be helpful to add HTTP/2 stream and priority support to > > > Traffic > > > >> > Dump. In order for the plugin to access this information, I > propose > > > >> adding > > > >> > the following two functions to the TS API: > > > >> > > > > >> > tsapi TSReturnCode TSHttpTxnClientHttp2StreamIdGet(TSHttpTxn txnp, > > > >> uint32_t > > > >> > *stream_id); > > > >> > > > > >> > tsapi TSReturnCode TSHttpTxnClientHttp2PriorityGet(TSHttpTxn txnp, > > int > > > >> > *stream_dependency, int *weight); > > > >> > > > > >> > I've created a draft PR with this implemented along with Traffic > > > Dump's > > > >> use > > > >> > of it: > > > >> > https://github.com/apache/trafficserver/pull/7149 > > > >> > > > > >> > Please let me know if there are any concerns or suggestions for > > > >> improvement > > > >> > concerning this. > > > >> > > > > >> > Thanks! > > > >> > Brian > > > >> > > > > >> > -- > > > >> > "Come to Me, all who are weary and heavy-laden, and I will > > > >> > give you rest. Take My yoke upon you and learn from Me, for > > > >> > I am gentle and humble in heart, and you will find rest for > > > >> > your souls. For My yoke is easy and My burden is light." > > > >> > > > > >> > ~ Matthew 11:28-30 > > > >> > > > > >> > > > > > > > > > > > > > -- > "Come to Me, all who are weary and heavy-laden, and I will > give you rest. Take My yoke upon you and learn from Me, for > I am gentle and humble in heart, and you will find rest for > your souls. For My yoke is easy and My burden is light." > > ~ Matthew 11:28-30 >