Coder Social home page Coder Social logo

tc-redirect-tap's Introduction

tc-redirect-tap

Build CodeQL Scan Go Report Card

tc-redirect-tap is a CNI plugin. This plugin allows you to adapt pre-existing CNI plugins/configuration to a tap device.

The plugin was initially developed as a part of firecracker-microvm/firecracker-go-sdk and can be used with Firecracker.

Questions?

Please use GitHub issues to report problems, discuss roadmap items, or make feature requests.

Security disclosures

If you think you’ve found a potential security issue, please do not post it in the Issues. Instead, please follow the instructions here or email AWS security directly.

License

This project is licensed under the Apache-2.0 License.

tc-redirect-tap's People

Contributors

alrs avatar amazon-auto avatar austinvazquez avatar ctrlaltdel121 avatar darkowlzz avatar dependabot[bot] avatar gaby avatar joffref avatar kern-- avatar kzys avatar nprajilesh avatar piotrlewandowski323 avatar sipsma avatar smira avatar sparr avatar swagatbora90 avatar u5surf avatar xibz avatar zyqsempai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tc-redirect-tap's Issues

Stable tap name for use with CNI?

Hi, I've been trying to use firecracker's snapshot and restore functionality, but one of the challenges is that the current version of the Firecracker Go SDK doesn't support loading from a snapshot. It does integrate well with CNI and has been setting up IPs and adapters really well.

So one workaround appears to be to use HTTP requests to the unix socket to restore a snapshot taken with the Go SDK. The only outstanding issue is getting a stable tap device name, otherwise Firecracker panics when trying to load the snapshot either with no output at all, or the equivalent of "tap not found".

What would you suggest? Is there a way to do this, or is CNI not suited to this task due to the way it allocates tap names? Could the tap name be passed in or configured from some other metadata from the host-local / ptp plugin?

@Kern-- @kzys

Chaining with Cilium CNI returns a nil interface

This is my CNI conf

{
  "name": "cilium",
  "cniVersion": "0.3.1",
  "plugins": [
    {
      "type": "cilium-cni",
      "enable-debug": false
    },
    {
      "type": "tc-redirect-tap"
    }
  ]
}

Cilium here handles the IPAM.

I cannot run Firecracker because I get the error:

expected to find 1 IP on redirect interface "eth0", but instead found []

I bit of debug of the plugin and I get this result into the tc-redirect-tap func here

func InterfaceIPs(result *current.Result, ifaceName string, sandbox string) []*current.IPConfig {

CNI Result: Interfaces:[{Name:eth0 Mac:c6:28:3f:e7:71:34 Sandbox:/var/run/netns/05673121-d177-11ea-b4db-005056848dc3}], IP:[{Version:4 Interface:<nil> Address:{IP:10.14.199.37 Mask:ffffffff} Gateway:10.14.24.19}], Routes:[{Dst:{IP:10.14.24.19 Mask:ffffffff} GW:<nil>} {Dst:{IP:0.0.0.0 Mask:00000000} GW:10.14.24.19}], DNS:{Nameservers:[] Domain: Search:[] Options:[]}

The function InterfaceIPs then cannot find any IPs because it checks under IP if the Interface is different than nil but in my case, it is nil, and then it fails.

Not sure if it is a bug of Cilium or we could move the check somewhere else.

Add official github releases

Hi there,
Would it be possible to set up github releases? This would
1.make it easier to download a pre-built artifact, and doesn't require golang to be installed
2. Let people subscribe to releases so they could see when new changes are released

Let me know if you want help setting it up

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.