I created a PR for this.
https://github.com/apache/trafficserver/pull/12032

Having ProxyProtocol in the name would be a bit confusing. One could read
it like VConnProxy and ProtocolInfo.
PROXY is an option, but not my preference.
I kept PP on the PR.

-- Masakazu


On Sun, Feb 9, 2025 at 11:19 AM Brian Neradt <brian.ner...@gmail.com> wrote:

> That’s another idea. I suppose between PROXY and PP I’d stick with PP.
>
> 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
>
>
> On Sun, Feb 9, 2025 at 11:32 AM Leif Hedstrom <zw...@apache.org> wrote:
>
> > I’m +1 too.
> >
> > Adding ProxyProtocol seems pretty long, maybe we can use PROXY (all upper
> > case) instead of PP, which is how it’s spelled.
> >
> > — Leif
> >
> > On Sat, Feb 8, 2025 at 20:03 Brian Neradt <brian.ner...@gmail.com>
> wrote:
> >
> >> +1
> >>
> >> My preference would be to spell out ProxyProtocol in the API instead of
> >> PP. But I don't feel that strongly about it though. +1 either way.
> >>
> >> On Fri, Feb 7, 2025 at 7:21 PM Masakazu Kitajo <mas...@apache.org>
> wrote:
> >>
> >>> Hi,
> >>>
> >>> I'd like to propose a new TS API to access information from PROXY
> >>> protocol.
> >>>
> >>> ATS supports PROXY protocol, which carries connection information
> >>> between a client and a LB (basically the 5-tuple). And I recently
> added the
> >>> support for PROXY protocol version 2 TLV (Type-Length-Value) fields,
> which
> >>> carry additional information such as TLS parameters. However, the
> >>> information received is currently only available inside ATS core.
> >>>
> >>> It'd be useful to export the information so that ATS plugins can access
> >>> it. An example use case is the Rate Limit plugin. The plugin is
> currently
> >>> almost useless if PROXY protocol is used, because the IP address that
> the
> >>> plugin can use is always the address of a LB, and there's no way to
> access
> >>> the server name in TLS SNI extension if the LB terminates TLS.
> >>>
> >>> Here's the proposal:
> >>>
> >>> TSReturnCode TSVConnPPInfoGet(TSVConn vc, uint32_t key, const char
> >>> **value, int *length);
> >>> TSReturnCode TSVConnPPInfoIntGet(TSVConn vc, uint32_t key, TSMgmtInt
> >>> *value);
> >>>
> >>> enum TSVConPPInfoKey {
> >>>   TS_PP_INFO_VERSION = 0x10000,
> >>>   TS_PP_INFO_SRC_ADDR,  // Returns a pointer for struct sockaddr
> >>>   TS_PP_INFO_SRC_PORT,
> >>>   TS_PP_INFO_DST_ADDR,
> >>>   TS_PP_INFO_DST_PORT,
> >>>   TS_PP_INFO_PROTOCOL,
> >>>   TS_PP_INFO_SOCK_TYPE,
> >>> };
> >>>
> >>> The function type signatures basiclly align with TSHttpTxnInfoIntGet.
> >>>
> >>> The "key" parameter is a 32 bit integer, although TLV type is a 16 bit
> >>> integer on PROXY protocol spec. This is to have a single interface to
> >>> access both the 5-tuple and TLV field values. Key value less than
> 0x10000
> >>> (65536) will be considered as a TLV type. Users of TSVConnPPInfoGet are
> >>> expected to cast the returned pointer accordingly or parse the returned
> >>> data.
> >>>
> >>> I considered using the existing APIs with auto data source switching
> >>> inside the functions, but it's probably not a good idea because ATS
> will
> >>> not be able to access the information from the immediate connection.
> And
> >>> TLV fields can have arbitrary data, thus, we need a new API anyway.
> So, I
> >>> think the existing APIs should work as they are (i.e. returns
> information
> >>> from the immediate connection) so plugins can choose which one to use.
> >>>
> >>> Thoughts?
> >>>
> >>> PROXY protocol:
> >>> https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt
> >>>
> >>> Rate Limit plugin:
> >>>
> >>>
> https://docs.trafficserver.apache.org/en/latest/admin-guide/plugins/rate_limit.en.html
> >>>
> >>> -- Masakazu
> >>>
> >>
> >>
> >> --
> >> "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
> >>
> >
>

Reply via email to