Code Monkey home page Code Monkey logo

client's People

Contributors

bschlinker avatar condector avatar cunha avatar elverton avatar jaredthecoder avatar leoomaia avatar marcelhmendes avatar nescio007 avatar osvaldofonseca avatar twabulldogg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

client's Issues

Extend peering.py to support IPv6

Requires extending the functions that interact with BIRD and file paths so they correctly refer to BIRDv4 and BIRDv6 instances and file paths.

Containers on AMS-IX cannot handle BIRD

Document that containers in amsterdam01 do not have enough RAM to run BIRD. Clients must run BIRD on their client (i.e., outside of the mux) to manage the control plane, but can still run programs to interact with the data plane on the container.

Clarify help text for ./peering prefix

In the help text for the '-c' option it says:

-c id       Attach community (47065,id) to the announcement.  This
            will let the announcement through peer with the given
            id.  May be added multiple times to announce **from**
            multiple peers.  [default: announce to all peers]
            (see https://peering.usc.edu/peers for the list of peers)

I think that 'from' should be a 'to', right?
Also:

[default: announce to all peers]

When announcing via: ./peering prefix announce -m amsterdam01 <prefix> I noticed that not all amsterdam01 peers (according to PEERING website) actually see the prefix.

Print error when VPN fails to start

Check return code from OpenVPN to determine if VPN started successfully. If it doesn't, print error message along with path of logfile to check.

Handle invalid OpenVPN PID file

If OpenVPN dies, the PID in the PID file will become invalid.

Right now, status checks will always try to send a signal to that PID. However, if that PID is invalid, you get an error like this:
error [openvpn/logs//tap5.pid exists but cannot send signal]

migrate function openvpn_all

migrate function openvpn_all (PR#424 apiclient-sh.source) to peering-openvpn file on client repo. It is being used in multiple containers.

OpenVPN wrapper should provide more details

  1. When a VPN session is being brought up, we should wait for the session to come up before returning. We could do this by listening to a dynamically generated status file (that is passed into the openvpn config) or by querying the management socket.

  2. If I call up multiple times on the same remote server the client becomes out of state because it will overwrite the existing PID file, try to start another OpenVPN client, and then discover that it cannot start a new connection, as another connection is already running. Since the PID file has been overwritten, the associated OpenVPN client becomes a "zombie", unmanageable by the wrapper tools.

Bird Syntax Error

Hi,

After starting my muxes with peering openvpn up MUX for every mux listed in peering openvpn status, I then run peering bgp start.

However, it then returns this error:
bird: /home/user/peering/client/configs/bird/bird.conf, line 9: syntax error

In configs/bird/bird.conf, the error is the first table line:

log "var/bird.log" all;

table rtup;
table igptable;
...

The output of bird --version: BIRD version 2.0.2

I am running on Arch Linux, Kernel 4.15.13-1-ARCH. I installed Bird with pacman -Sy bird.

The documentation does not state which bird version you are using. I believe that is the issue.

Client should install rules and default routes for oif packets

Sockets bound to a specific network device (say tun9) and sourcing packets from a PEERING address (say 184.164.224.1) will get routed by table 151 due to the source-routing rule from 184.164.224.0/24 lookup 151. This rule is added for each prefix announced through the client.

One problem is that if the client is connected to multiple muxes, BIRD may have multiple choices for a given destination prefix and will install its preferred route to table 151. If the user tries to ping -I tap9 8.8.8.8, Linux will look for the gateway on table 151. If the route BIRD prefers is not through the mux connected to tap9, then the gateway will not be locally reachable on tap9, Linux has no valid route, and will resort to ARP'ing for the destination over the OpenVPN tunnel (which had me confused until I figured this out).

To avoid this issue, we should maintain mux-specific tables that need to be populated by BIRD. We then need to source-route packets from sockets bound to a specific interface using that table by creating rules with oif tapX lookup 100+X prio 100+X. Note that the priority needs to be higher (lower number) than 151 so the oif rule gets applied first for sockets bound to specific interfaces.

Unboud variable error

Users have reported an unbounded variable error in our scripts; needs investigation. Here is a snipped of the faulty code:

line 186:     for poison in "${poison_list[@]}" ; do

refactor bird/configs/pfx2id.txt file

we no longer need prefix identifiers. rename this file and move it somewhere up in the hierarchy to make it clearer that it is just a list of prefixes that clients should be messing up with.

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.