katran | A high performance layer 4 load balancer | Networking library

 by   facebookincubator C Version: Current License: GPL-2.0

kandi X-RAY | katran Summary

kandi X-RAY | katran Summary

katran is a C library typically used in Networking applications. katran has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has medium support. You can download it from GitHub.

Fast : katran uses XDP for packet forwarding, which allows to run packet handling routines right after packet has been received by network interface card (NIC) and before kernel had any chance to run (when XDP is working in "driver mode", katran supports "generic XDP" mode of operation as well (with some performance degradation compare to "driver mode")). Performance scales linearly with a number of NIC's RX queues : The way XDP works is that it invokes BPF program on every received packet, and if your NIC has multiple queues, for each of them BPF program will be invoked independently. As katran is completely lockless and uses per-cpu versions of BPF maps - it scales linearly. RSS friendly encapsulation : katran is uses ipip encapsulation for packet forwarding from L4 lb to L7 lb. However, to be able to work in conjunction with RSS on L7 lb receive side, instead of using the same source for every ipip packet, katran crafts a special one, in such a way, that different flows will have different outer (ipip) source IP, but packets in same flow will always have the same. Fixed size (size is configurable on start) connection tracking table w/ LRU strategy for eviction of old entries. Modified Maglev hashing for connections : It provides us good resiliency in case of failure and excellent load balancing features. The hashing was modified to be able to support unequal weights for backend (L7 lbs) servers. No need for busylooping on receive path : Your load balancer will barely consume any CPU if there is no traffic to serve. katran (and XDP in general) allows you to run any application w/o any performance penalties on the same server (compare to some of other "kernel bypass" technologies).
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              katran has a medium active ecosystem.
              It has 4159 star(s) with 456 fork(s). There are 201 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 5 open issues and 99 have been closed. On average issues are closed in 104 days. There are 6 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of katran is current.

            kandi-Quality Quality

              katran has 0 bugs and 0 code smells.

            kandi-Security Security

              katran has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              katran code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              katran is licensed under the GPL-2.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              katran releases are not available. You will need to build from source code and install.
              Installation instructions are available. Examples and code snippets are not available.
              It has 8946 lines of code, 644 functions and 58 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of katran
            Get all kandi verified functions for this library.

            katran Key Features

            No Key Features are available at this moment for katran.

            katran Examples and Code Snippets

            No Code Snippets are available at this moment for katran.

            Community Discussions

            QUESTION

            Multicast being sent over hardware address of default gateway address instead of ethernet multicast address
            Asked 2022-Mar-10 at 14:07

            I have this code to send multicast messages to a group. There are no errors while running the program but when I monitor packets in Wireshark the ethernet destination of my packets are of my default gateway instead of something like 01-00-5e-xx-xx-xx

            The code:

            ...

            ANSWER

            Answered 2022-Mar-10 at 14:07

            244.244.244.1 is not a valid multicast address.

            Multicast address are in the range of 224.0.0.1 - 239.255.255.255. The address you're sending to is not in that range. So the outgoing MAC address is not a multicast MAC.

            Change the destination IP to be in the range of multicast IP addresses and you'll see a proper multicast MAC address.

            Source https://stackoverflow.com/questions/71419150

            QUESTION

            How to extract street graph or network from OpenStreetMap?
            Asked 2022-Feb-17 at 16:03

            How to extract street graph or network from OpenStreetMap ?

            ...

            ANSWER

            Answered 2022-Feb-17 at 15:56
            Solutions:

            There are many solutions to achieve this goal, I listed some of them below.

            - Overpass-api

            Overpass-api & overpass-turbo let you use overpass query language to collect ways and nodes of type highway for a city :

            Source https://stackoverflow.com/questions/69174361

            QUESTION

            Julia - not able to capture looped back UDP packets in Wireshark
            Asked 2022-Jan-14 at 08:46

            I have a UDP sender program here:

            ...

            ANSWER

            Answered 2022-Jan-14 at 08:46

            When I tried to change the destination ip address to 255.255.255.255 [broadcasting?]

            Source https://stackoverflow.com/questions/70694929

            QUESTION

            In a vscode development container, is there a way to access the docker container from a different machine on the local network?
            Asked 2022-Jan-01 at 05:35

            I have an app (sveltekit) running inside and would like to access it from other devices on my local network.

            I can access it normally from the host machine on localhost:3000.

            I want to access it somehow from another machine on the local network. Is this possible? Sveltekit cli has --host flag, which outputs the following:

            ...

            ANSWER

            Answered 2022-Jan-01 at 05:35

            All that was needed was to change the following VSCode setting. By default it was set to "localhost". Setting it to "allInterfaces" grants access to other devices on the local network.

            Source https://stackoverflow.com/questions/70523216

            QUESTION

            Floating IPs usage on Digital Ocean
            Asked 2021-Nov-27 at 00:12

            I am looking for a basic thing yet I have not found not even a single good documentation on getting it done.

            I want to allocate a floating IP, then associate it to a network interface of a droplet other than eth0. The reason is I want to have the ability to very easily switch from one IP to the other with a programming language.

            In a few words, I want to be able to do these two commands and both should provide a different response.

            ...

            ANSWER

            Answered 2021-Nov-27 at 00:12

            In the cloud (AWS. GCP etc.) ARP is emulated by the virtual network layer, meaning that only IPs assigned to VMs by the cloud platform can be resolved. Most of the L2 failover protocols do break for that reason. Even if ARP worked,the IP allocation process for these IPs (often called “floating IPs”) would not integrate with the virtual network in a standard way, so your OS can't just "grab" the IP using ARP and route the packets to itself.

            I have not personally done this on Digital Ocean, but I assume that you can call the cloud's proprietary API to do this functionality if you would like to go this route.

            See this link on GCP about floating IPs and their implementation. Hope this is helpful.

            Here's an idea that needs to be tested:

            • Let's say you have Node1(10.1.1.1/24) and Node2(10.1.1.2/24)
            • Create a loopback interface on both VMs and set the same IP address for both like (10.2.1.1/32)
            • Start a heartbeat send/receive between them
            • When NodeA starts it automatically makes an API call to create a route for 10.2.1.1/32 and points to itself with preference 2
            • When NodeB starts it automatically makes an API call to create a route for 10.2.1.1/32 and points to itself with preference 1
            • The nodes could monitor each other to withdraw the static routes if the other fails. Ideally you would need a 3rd node to reach quorum and prevent split brain scenarios, but you get the idea right?

            Source https://stackoverflow.com/questions/69919561

            QUESTION

            How to create an edgelist from a dataframe (expand, group_by?)
            Asked 2021-Oct-23 at 14:32

            I have a dataframe in R similar to the following:

            ...

            ANSWER

            Answered 2021-Sep-14 at 04:44

            I really love a base R solution, so that's what you'll get from me. It's a bit hacky and ad hoc but it seems to get the job done pretty quickly.

            Source https://stackoverflow.com/questions/69171494

            QUESTION

            Ubuntu16 LetsEncrypt R3 issue
            Asked 2021-Sep-30 at 22:32

            I've been trying to wrap my head around this issue all day, could someone help resolve or at least explain it as if I'm a child?

            I have an Ubuntu 16 server, running openssl 1.1, & letsencrypt

            R3 support expired last night and now an application doesn't work on all devices because it's intermediate signature is from R3 ?

            I've removed the X3 from my cert chain providers and generated fresh SSLs with letsencrypt but it has not solved the issue.

            ...

            ANSWER

            Answered 2021-Sep-30 at 22:32

            Okay, what I did was to use this config in getssl.cfg

            Source https://stackoverflow.com/questions/69394817

            QUESTION

            Updated windows docker and now it doesn't work outside localhost
            Asked 2021-Sep-23 at 10:38

            I have been running a media cluster for sometime without any issues. I have everything networked into two different docker networks... the first network just bridges the docker instance to the local machine, the second network is a docker VPN container that I use for the other media services (an earlier version of what I am working on can be found here: https://github.com/Xander-Rudolph/MediaDocker)

            The strangest thing happened today though. I ran the docker update for windows and now docker spools up without any errors or issues, however none of the services work outside of the machine running docker. Usually I have a poke through for a couple of the services in my router (namely wordpress/joomla which is on the bridge) and they work outside of my local network, but none of them are working anymore. I was able to confirm its not the DNS A record because I'm able to use the RDP ports I have mapped for my router, and when I test on another machine in the same network, it can't access the services via the internal IP (but it can RDP).

            Anyone have any idea what could have changed to break this? I've already updated all my docker images and even rebuilt my VPN container (before I realized its a networking issue). What are some steps I can do to try to troubleshoot what is going wrong in docker to prevent access outside of localhost?

            Update

            I've been able to rule out the docker update as the root cause... I upgraded docker on my laptop (which was previously running the same version as my desktop) and its not having the same issue... this configuration must be localized to this desktop... No idea what the issue is... Will try a linux VM on the desktop instead of docker for windows...

            Update 2

            After a lot of screwing around in both a VM and in WSL, I'm still only able to access the docker services from localhost but not a different machine on my network or via the IP on the host machine (perhaps something similar to this: Can't access localhost via IP address). RDP does work so the computer is accessible but the services are not.

            I'm not sure if this is a result of a docker networking config or a windows network config (I'm using WSL with docker installed on ubuntu 20.08) but I'm not seeing anything stick out. I'm going to remove the tag for docker windows but this is definitely an issue with networking and I suspect it has something to do with the fact that the containers are running behind a VPN... although I don't know why I would be able to access them on localhost but not the IP on another VM...

            When I run

            ...

            ANSWER

            Answered 2021-Sep-21 at 02:43

            Your question: "...What are some steps I can do to try to troubleshoot what is going wrong in docker to prevent access outside of localhost?..."

            Troubleshooting help for you, first do you have multiple networking adapters (Ethernet, Wi-Fi, etc.) present on the host. First ensure, the priority of these adapters needs to be configured in correct order so the Windows networking stack can correctly choose gateway routes.

            Now, to fix this set your primary internet-connected networking adapter to have the lowest InterfaceMetric value, use can use these Powershell commands from an elevated console:

            Source https://stackoverflow.com/questions/69111163

            QUESTION

            Networked aframe dynamic rooms not working with easy rtc
            Asked 2021-Sep-17 at 15:17
            Issue

            Hi, I've remixed a template for networked aframe dynamic rooms using a form:

            https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0

            For some reason whenever I add these lines of code to the tag, the entire project breaks:

            ...

            ANSWER

            Answered 2021-Sep-17 at 15:17

            afaik the dynamic-room component is designed to attach the networked-scene, not update it (since it doesn't handle updates). That's why the dynamic-room example scene does only have a dynamic-room component, and also why the dynamic-room is not working with networked-scene.

            I'd throw all the networked-scene attributes to the dynamic-room setup, but it's also possible to make the two work together pretty much like you want it:

            Source https://stackoverflow.com/questions/69138587

            QUESTION

            Return a list of mutual nodes between every pair of nodes in R
            Asked 2021-Sep-10 at 20:25

            I want to obtain a list of mutually connected nodes between every pair of nodes in my graph:

            ...

            ANSWER

            Answered 2021-Sep-10 at 19:00

            This is not exactly efficient, it's a brute force double loop, but you can do

            Source https://stackoverflow.com/questions/69127621

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install katran

            We provide a shell script that automates the build of katran for Ubuntu 18.04. To build and install katran library and thrift/gRPC examples - you need to run build_katran.sh script. It should take care of all the required dependencies. If you need to build it for other Linux distributions, you need to make sure that :.
            it runs on recent linux kernel (4.13+)
            you have installed: folly recent version of clang compiler (6.0+) glog/gtest/gflags/elf libraries

            Support

            README (this file) - a generic overview of katran.USAGE - the detailed description of how katran's library can be used, configured or changed.DEVELOPING - description of how developing process looks like: how to build and test katran.EXAMPLE - output of how to run provided examples (thrift and gRPC services, which leverage katran library)
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/facebookincubator/katran.git

          • CLI

            gh repo clone facebookincubator/katran

          • sshUrl

            git@github.com:facebookincubator/katran.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Networking Libraries

            Moya

            by Moya

            diaspora

            by diaspora

            kcptun

            by xtaci

            cilium

            by cilium

            kcp

            by skywind3000

            Try Top Libraries by facebookincubator

            AITemplate

            by facebookincubatorPython

            velox

            by facebookincubatorC++

            cinder

            by facebookincubatorPython

            redux-react-hook

            by facebookincubatorTypeScript

            BOLT

            by facebookincubatorC++