UDP protocol

2018-03-17 Thread dormando
Not sure how active this list is anymore :P

Are any of you still listening users of the UDP protocol? If so, mind
reaching out to me (here or privately) to explain your use case?

I'm thinking around some long term options with it; one is to turn it into
a compile flag, and another is to keep it (and update it with SO_REUSEPORT
and *_mmsg under linux) but restrict responses to single packet. It can
still be useful for fire-and-forget cases (ie; spraying touch's or
fetching flag keys asynchronously), but there isn't much use for it
otherwise these days.

Thanks,
-Dormando

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: UDP protocol

2018-03-17 Thread Robert Gil
I still have a use case for it. We're looking to make the highest
performing enrichment for log ingestion possible.

https://www.elastic.co/blog/elasticsearch-data-enrichment-with-logstash-a-few-security-examples

In the use case described above, we aim to enrich as close to real time as
possible for log ingestion. Small, light, lookups... non blocking updates
for threat and other security related feeds.

We're not too concerned about misses since we need to back enrich/compare
against data that has already been ingested.

Thoughts?

Rob

On Sat, Mar 17, 2018 at 2:22 PM, dormando  wrote:

> Not sure how active this list is anymore :P
>
> Are any of you still listening users of the UDP protocol? If so, mind
> reaching out to me (here or privately) to explain your use case?
>
> I'm thinking around some long term options with it; one is to turn it into
> a compile flag, and another is to keep it (and update it with SO_REUSEPORT
> and *_mmsg under linux) but restrict responses to single packet. It can
> still be useful for fire-and-forget cases (ie; spraying touch's or
> fetching flag keys asynchronously), but there isn't much use for it
> otherwise these days.
>
> Thanks,
> -Dormando
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "memcached" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to memcached+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: UDP protocol

2018-03-17 Thread dormando
Hey,

That is exactly the use case I would expect out of UDP! Thanks for
responding so quickly.

In your example module I can't quickly figure out how UDP is configured
(it just seems to import dalli and use it?)

Are you using multi-packet responses for UDP lookups? If you're running
sets via UDP they can't be more than 1400 bytes in size (more like
1300ish). That's generally been okay?

On Sat, 17 Mar 2018, Robert Gil wrote:

> I still have a use case for it. We're looking to make the highest performing 
> enrichment for log ingestion possible.
>
> https://www.elastic.co/blog/elasticsearch-data-enrichment-with-logstash-a-few-security-examples
>
> In the use case described above, we aim to enrich as close to real time as 
> possible for log ingestion. Small, light, lookups... non blocking updates for
> threat and other security related feeds.
>
> We're not too concerned about misses since we need to back enrich/compare 
> against data that has already been ingested.
>
> Thoughts?
>
> Rob
>
> On Sat, Mar 17, 2018 at 2:22 PM, dormando  wrote:
>   Not sure how active this list is anymore :P
>
>   Are any of you still listening users of the UDP protocol? If so, mind
>   reaching out to me (here or privately) to explain your use case?
>
>   I'm thinking around some long term options with it; one is to turn it 
> into
>   a compile flag, and another is to keep it (and update it with 
> SO_REUSEPORT
>   and *_mmsg under linux) but restrict responses to single packet. It can
>   still be useful for fire-and-forget cases (ie; spraying touch's or
>   fetching flag keys asynchronously), but there isn't much use for it
>   otherwise these days.
>
>   Thanks,
>   -Dormando
>
>   --
>
>   ---
>   You received this message because you are subscribed to the Google 
> Groups "memcached" group.
>   To unsubscribe from this group and stop receiving emails from it, send 
> an email to memcached+unsubscr...@googlegroups.com.
>   For more options, visit https://groups.google.com/d/optout.
>
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups 
> "memcached" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to memcached+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: UDP protocol

2018-03-17 Thread Robert Gil
We haven't started tuning for UDP. That module was a PoC because all the
other memcache modules were _incomplete_ in terms of feature set. We use
namespaces for different things like threats, assets, users, containers,
etc. The plan is to also use pools to scale the memory and allow for easier
distributed update across all ingestion nodes.

I plan to start testing using UDP and dalli, but if dalli doesn't do the
trick, we'll re-write with the java client lib. For the UDP lookups, a
single key should be fine in 1400 bytes for common lookups like IPs. We can
also consider jumboframes (9000) for increased payload. Multi packet sets
may be necessary, especially if we do lookups on commonly exploited URI
patterns with long URIs.

With regard to testing, i'd like to PoC this with the goal of doing 1M
events/s with 1M lookups/s for enrichment.

On Sat, Mar 17, 2018 at 2:58 PM, dormando  wrote:

> Hey,
>
> That is exactly the use case I would expect out of UDP! Thanks for
> responding so quickly.
>
> In your example module I can't quickly figure out how UDP is configured
> (it just seems to import dalli and use it?)
>
> Are you using multi-packet responses for UDP lookups? If you're running
> sets via UDP they can't be more than 1400 bytes in size (more like
> 1300ish). That's generally been okay?
>
> On Sat, 17 Mar 2018, Robert Gil wrote:
>
> > I still have a use case for it. We're looking to make the highest
> performing enrichment for log ingestion possible.
> >
> > https://www.elastic.co/blog/elasticsearch-data-enrichment-
> with-logstash-a-few-security-examples
> >
> > In the use case described above, we aim to enrich as close to real time
> as possible for log ingestion. Small, light, lookups... non blocking
> updates for
> > threat and other security related feeds.
> >
> > We're not too concerned about misses since we need to back
> enrich/compare against data that has already been ingested.
> >
> > Thoughts?
> >
> > Rob
> >
> > On Sat, Mar 17, 2018 at 2:22 PM, dormando  wrote:
> >   Not sure how active this list is anymore :P
> >
> >   Are any of you still listening users of the UDP protocol? If so,
> mind
> >   reaching out to me (here or privately) to explain your use case?
> >
> >   I'm thinking around some long term options with it; one is to turn
> it into
> >   a compile flag, and another is to keep it (and update it with
> SO_REUSEPORT
> >   and *_mmsg under linux) but restrict responses to single packet.
> It can
> >   still be useful for fire-and-forget cases (ie; spraying touch's or
> >   fetching flag keys asynchronously), but there isn't much use for it
> >   otherwise these days.
> >
> >   Thanks,
> >   -Dormando
> >
> >   --
> >
> >   ---
> >   You received this message because you are subscribed to the Google
> Groups "memcached" group.
> >   To unsubscribe from this group and stop receiving emails from it,
> send an email to memcached+unsubscr...@googlegroups.com.
> >   For more options, visit https://groups.google.com/d/optout.
> >
> >
> > --
> >
> > ---
> > You received this message because you are subscribed to the Google
> Groups "memcached" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to memcached+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
> >
> >
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "memcached" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to memcached+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: UDP protocol

2018-03-17 Thread dormando
Got it.

Mind if we talk through this a bit? I have a feeling you'll do okay
without UDP.

Are you looking at 1M sets + 1M gets/sec per memcached or for the whole
cluster?

UDP sets can't be multi-packet; it's not implemented at all. Jumbo frames
may help (I forget if the MTU is discovered internally). It's relatively
hard to do multi-packet requests since you have to manage timeouts on the
server and no other code paths do this.

Also, if you're using dalli there should hopefully be a method of stacking
requests down connections with async callbacks? I've not looked at the API
in a very long time.

Binprot has "set quiet" and opaque's (message id's) for all queries. Which
means updates can be simply stacked down the pipe without blocking on
responses. Also lookups can be stacked down as the requests come in, while
still waiting for a previous response.

Just pure quiet binprot sets (with significant batching) can easily do
500k+ sets/sec with a single TCP connection. It might be as high as 1m,
I'll have to check again. With less batching you'd need a few more
connections/processors.

Since the UDP code isn't using much batching wise nor REUSEPORT the
performance ceiling is presently much lower than the TCP protocol,
ironically.

On Sat, 17 Mar 2018, Robert Gil wrote:

> We haven't started tuning for UDP. That module was a PoC because all the 
> other memcache modules were _incomplete_ in terms of feature set. We use
> namespaces for different things like threats, assets, users, containers, etc. 
> The plan is to also use pools to scale the memory and allow for easier
> distributed update across all ingestion nodes.
>
> I plan to start testing using UDP and dalli, but if dalli doesn't do the 
> trick, we'll re-write with the java client lib. For the UDP lookups, a single
> key should be fine in 1400 bytes for common lookups like IPs. We can also 
> consider jumboframes (9000) for increased payload. Multi packet sets may be
> necessary, especially if we do lookups on commonly exploited URI patterns 
> with long URIs.
>
> With regard to testing, i'd like to PoC this with the goal of doing 1M 
> events/s with 1M lookups/s for enrichment.
>
> On Sat, Mar 17, 2018 at 2:58 PM, dormando  wrote:
>   Hey,
>
>   That is exactly the use case I would expect out of UDP! Thanks for
>   responding so quickly.
>
>   In your example module I can't quickly figure out how UDP is configured
>   (it just seems to import dalli and use it?)
>
>   Are you using multi-packet responses for UDP lookups? If you're running
>   sets via UDP they can't be more than 1400 bytes in size (more like
>   1300ish). That's generally been okay?
>
>   On Sat, 17 Mar 2018, Robert Gil wrote:
>
>   > I still have a use case for it. We're looking to make the highest 
> performing enrichment for log ingestion possible.
>   >
>   > 
> https://www.elastic.co/blog/elasticsearch-data-enrichment-with-logstash-a-few-security-examples
>   >
>   > In the use case described above, we aim to enrich as close to real 
> time as possible for log ingestion. Small, light, lookups... non
>   blocking updates for
>   > threat and other security related feeds.
>   >
>   > We're not too concerned about misses since we need to back 
> enrich/compare against data that has already been ingested.
>   >
>   > Thoughts?
>   >
>   > Rob
>   >
>   > On Sat, Mar 17, 2018 at 2:22 PM, dormando  wrote:
>   >       Not sure how active this list is anymore :P
>   >
>   >       Are any of you still listening users of the UDP protocol? If 
> so, mind
>   >       reaching out to me (here or privately) to explain your use case?
>   >
>   >       I'm thinking around some long term options with it; one is to 
> turn it into
>   >       a compile flag, and another is to keep it (and update it with 
> SO_REUSEPORT
>   >       and *_mmsg under linux) but restrict responses to single 
> packet. It can
>   >       still be useful for fire-and-forget cases (ie; spraying touch's 
> or
>   >       fetching flag keys asynchronously), but there isn't much use 
> for it
>   >       otherwise these days.
>   >
>   >       Thanks,
>   >       -Dormando
>   >
>   >       --
>   >
>   >       ---
>   >       You received this message because you are subscribed to the 
> Google Groups "memcached" group.
>   >       To unsubscribe from this group and stop receiving emails from 
> it, send an email to memcached+unsubscr...@googlegroups.com.
>   >       For more options, visit https://groups.google.com/d/optout.
>   >
>   >
>   > --
>   >
>   > ---
>   > You received this message because you are subscribed to the Google 
> Groups "memcached" group.
>   > To unsubscribe from this group and stop receiving emails from it, 
> send an email to memcached+unsubscr...@googlegroups.com.
>   > For more options