EVIX

What is EVIX anyway?

As you probably saw on our main page, EVIX stands for the Experimental Virtual Internet Exchange. For those who are not familiar with how the internet works, I'll start with the basics. Whether that be your phone or one of the many servers used by Google, every computer must know how to navigate the large number of connections running all over the Earth. Your phone must know how to get to Google, and Google must know how to send the reply back to your phone. Since there are many internet service providers globally, it would be impossible for them all to connect directly to each other. So we have a protocol called BGP that your ISP uses to tell the other ISPs that it connects to that it knows how to get to your phone. All of those ISPs then forward that message to all of the ISPs that they are connected to until the whole world knows the route.

But if a connection has to go through many ISPs, it is going to take longer. So having direct links to more ISPs is usually a good thing. Many ISPs of the same size may connect for free since they both receive benefits by doing that. But once you have more than a few ISPs, the number of direct connections multiplies. Each new ISP would have to connect to every existing one. We have almost 200 members, so each new member would have to connect to 200 existing members!

As you can probably guess, there is a better way. That's with an internet exchange. An internet exchange allows many ISPs or other networks in a close area to make a single connection to the internet exchange, which then acts as if they were directly connected to all of the other members.

But traditional IXs can be very expensive and are generally only available to those who store servers in the same facility. This is reasonable for businesses. For hobbyists like the members of EVIX, it is prohibitively expensive. That's why we created EVIX to support the network engineers of the future. EVIX allows our members to learn how real internet exchanges work at almost no cost. The skills that they learn can be transferred directly to future jobs and experiences. It's been a fantastic learning opportunity for those of us running EVIX since it has allowed us to learn what it is like to develop in an environment where hundreds of people are counting on our work and have particular questions or issues that we never thought about.

Our Goals

  • We want to provide a low barrier to entry opportunity for hobbyists and the like to get experience with as close to an actual internet exchange as we can provide.
  • It is also vital that we automate the entire process as much as possible for the sake of learning, reducing the workload on our volunteers, and supporting other internet exchanges in their automation.

Supported Connection Types

Because internet exchanges allow each member to determine their policy with all of the other networks connected to the exchange, it is required that we use connection types that support the tunnelling of packets on layer 2 of the OSI model. This is the layer that Ethernet and MAC addresses work at. Please note that the Generic Routing Encapsulation (GRE) tunnelling protocol is not supported since it can only tunnel layer three packets. GRE-TAP is an extension that can transport layer two packets, but it has inconsistent implementations that often lead to unresolvable issues. For that reason, we do not support it. However, we do support the following connection types.

  • Virtual Extensible LAN (VXLAN)
  • Ethernet over IP (EoIP)
  • OpenVPN
  • ZeroTier
  • Local Ethernet
  • Custom Layer 2 Transit

We are open to trying other protocols that work on layer two as well. Let us know in your ticket.

Technologies Used

  • This website was written by hand with HTML5 and SCSS and is served with OpenLiteSpeed. Jinja is used for templating.
  • All of our servers run on the Ubuntu Server distribution of Linux.
  • Our automation scripts are primarily written with Bash, JQ, Python, and PHP.
  • We use a MySQL database for our peer information and monitoring.
  • Monitoring is done with LibreNMS and SmokePing
  • Git is used for managing script and static config changes. Our repository is stored on a GitLab server hosted by one of our admins. We have a mirror of our repository on GitHub so that we can share our work with others. We accept pull requests and issues on that repository so if you have ideas, let us know!
  • Deployment of new scripts and configuration is done with Ansible.

Volunteers

AirGapped
  • Technical Operations
Alex
  • Technical Operations
  • Software Development
Bryce Wilson
  • Technical Operations
  • Public Relations
  • Software Development
  • Leadership
  • Main Website
Christopher Munz-Michielin
  • Technical Operations
  • Software Development
  • Donation and management of the FMT, VAN, and AMS POPs
Fognet
  • Technical Operations
  • Donation and management of the FRA and ZUR POPs
Gabriel
  • Technical Operations
  • Software Development
  • Status and Provisioning Website
Marc SN
  • Technical Operations
Michelle Goossens
  • Technical Operations
Nate
  • Technical Operations
Ross Tajvar
  • Technical Operations
  • Software Development
  • Linux Administration and Security
TacticalGazelle
  • Technical Operations
Vox
  • Technical Operations

Special Thanks

  • Free Range Cloud / 10VPN Hosting for the donation of a VPS in Fremont and Vancouver and IPv6 space for the peering LAN. They also sponsored our ASNs and IPv4 space. Free Range Cloud offers VPSs directly connected to the exchange.
  • iFog GmbH for the donation of VMs in Frankfurt and Zurich. They offer VPSs directly connected to the exchange in both locations.
  • Xenyth Cloud/GoCodeIT Inc for the donation of our tunnel server in Toronto, Canada. They offer VPSs directly connected to the exchange.

Github

Bryce Wilson has hosted all of our code on GitHub for anyone to use. The code is not meant to be a cookie-cutter solution at the moment, so there is a lot of documentation that is lacking and other configs that are not integrated into the repository at the moment. It is more meant to be used as a reference for those who have come across similar issues. For example, we have a few JQ scripts for parsing the output of the Bird BGP Daemon.

While we are happy to share our code snippets, we ask that you do not copy our code in its entirety. Essentially, please do not outright copy our website design or text or utilize all of our scripts together as a whole. But in general, we are happy to see our code used by others. If in doubt, send us an email, and we will be glad to chat. We can also give you some tips or help you when something is not adequately explained.

Donate

At one point, we were accepting donations by PayPal. We are looking into overhauling the donation system, but this has not been done yet. For now, let us know by email if you wish to donate, and we can help you out with that. We also greatly accept donations of hardware, software, rack space, transit, and sometimes VMs for new POPs if it is in an area where we have little presence. We would currently be open to a POP on the east coast of Canada or the USA, Asia, Africa, or South America. If you have another idea for a POP location or have another donation idea, send us an email and let us know.

Contact

You may submit a peering request on our get connected page. Otherwise, you may email us.