Git Product home page Git Product logo

Comments (7)

sbernard31 avatar sbernard31 commented on May 30, 2024

My feeling is, that the drop in the second cause trouble. Doesn't that depend on the server sending it? If it's the "associated one", then the packet should pass as in the third.

I read this again and you're right.

I tried again :

For egress traffic :

  • we search if we have an clientip:port/realserverip association.
  • if yes and packet comes from the associated real server , we modify source address (source NAT) replacing real server address by the virtual server ip address.
  • if yes and packet comes from "not associated" real server, we drop the packet
  • if no, we create a new association using the source IP address(real server IP address) and modifying source address(source NAT) by the virtual server ip address.

Is it better ?

from sbulb.

boaks avatar boaks commented on May 30, 2024

Yes!

from sbulb.

sbernard31 avatar sbernard31 commented on May 30, 2024

This is fixed in master. Thx @boaks for reporting this. 🙏

from sbulb.

sbernard31 avatar sbernard31 commented on May 30, 2024

@boaks, not directly linked to this issue.

But I believe that you are working on making ConnectionID more used.
Is this project something which could interested you ?
(The code was rewrited a lot and unit test was added in : #34)
I think it could totally make sense to add CID support (#9) to it.

I have a vague memory that CID in a cluster could be useful for hono too ? Am I right ?

from sbulb.

boaks avatar boaks commented on May 30, 2024

Is this project something which could interested you ?

I think, in the future, yes. For now my interest was to collect information around "CoAP/DTLS load-balancing" and current implementations of that.

But I believe that you are working on making ConnectionID more used.

Currently I work on a solution, where Californium/Scandium forward the CID messages on their own.
wip_dtls_cid_cluster.
My first results are promising (performance penalty of "java message forwarding" 15-20%) and it's easy and flexible to use. It doesn't require additional components. My intention is, to gain more experience.

I think it could totally make sense to add CID support (#9) to it.

My feeling is, that, if the penalty is only 20% but no additional components are required, then that's good enough to learn, if it pays-off. So, I would postpone that for now. May be next spring will be the right time.

Let me add, your current implementation considers the address:ports to be rather stable. Though I guess, adding a balancing based on "Source Hashing" may easier generate benefit for now.

from sbulb.

sbernard31 avatar sbernard31 commented on May 30, 2024

I think, in the future, yes. For now my interest was to collect information around "CoAP/DTLS load-balancing" and current implementations of that.

Do not hesitate to share what you find :)
Our needs was strong stickiness and server-initiated, we found nothing about that.

Though I guess, adding a balancing based on "Source Hashing" may easier generate benefit for now.

You mean something like this : https://www.haproxy.com/blog/client-ip-persistence-or-source-ip-hash-load-balancing/

Allowing kind of stateless load balancing ?
I will think about this 🤔.
Issue could be to keep the stickiness specially when you add or remove server dynamically.

from sbulb.

boaks avatar boaks commented on May 30, 2024

Issue could be to keep the stickiness specially when you add or remove server dynamically.

My idea was more the additional option to use it. If it comes with as "static cluster" instead of a "elastic cluster", then it seems to be the decision of the user to chose, what fits best.

from sbulb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.