Commit Graph

298 Commits

Author SHA1 Message Date
Tomofumi Hayashi
3a7f254a63 Introduce iplink(MTU MAC and promiscas) feature into tuning
This change adds 'ip link' command related feature into tuning
meta cni plugin. Currently MTU, MAC and promiscas mode are
supported.
2018-07-31 12:54:15 +09:00
Dan Williams
2b819b5571
Merge pull request #129 from mauriciovasquezbernal/fix_ip_leakage_bridge
bridge: release IP in case of error
2018-07-27 15:58:08 -05:00
Mauricio Vasquez B
316489903b bridge: add test case for release IP on error
Signed-off-by: Mauricio Vasquez B <mauricio.vasquez@polito.it>
2018-07-27 07:57:12 -05:00
Mauricio Vasquez B
3a7ee332be bridge: release IP in case of error
If there is an error after an IP has been allocated it is necesary
to release it.

Signed-off-by: Mauricio Vasquez B <mauricio.vasquez@polito.it>
2018-07-27 07:57:04 -05:00
Tomofumi Hayashi
cc3ad26691 Incorporate Casey's comments 2018-07-27 12:47:28 +09:00
Dan Williams
4b296ba330 bridge: add random datadir to all testcases 2018-07-26 21:09:30 -05:00
Piotr Skamruk
6dc16b9132 plugins/ipam/static: Update docstring 2018-07-19 14:35:10 +02:00
Matt Dupre
f970542036
Merge pull request #173 from sak0/pr
remove duplicated assginment.
2018-07-11 16:32:59 +01:00
Tomofumi Hayashi
3b3622db67 Incorporate jellonek's comments. 2018-07-06 13:17:22 +09:00
CuiHaozhi
dc899ac0e0 remove duplicated assginment.
Signed-off-by: CuiHaozhi <61755280@qq.com>
2018-07-05 09:21:09 +08:00
Ye Yin
7571169160 Fix tc-tbf burst value in bytes. 2018-07-03 18:36:49 +08:00
Neil Wilson
b2fc336833 plugins/host-local: ensure subnet is a network address
Allocation code assumes the specified subnet is a clean network address
prefix, so check that is the case and throw an error otherwise

Fixes #161
2018-06-18 10:13:34 +01:00
Tomofumi Hayashi
6da1cb7876 Support CNI_ARGS in static IPAM plugin
This change is to add CNI_ARGS support in static IPAM plugin.
When IP/SUBNET/GATEWAY are given in CNI_ARGS, static IPAM adds
these info in addition to config files.

To configure ip address only from CNI_ARGS, 'address' field in config
is changed to optional from required.
2018-06-18 16:18:47 +09:00
Casey Callendrello
68b4efb405 plugins/* stub-out GET functions so plugins build with v0.7 2018-06-15 15:28:53 +02:00
Luca Bruno
475fdb8a0a
plugins/dhcp: update to new go-systemd 2018-05-28 12:35:04 +00:00
Dan Williams
1d973f59d2
Merge pull request #147 from databus23/host-device-fix
host-device: Ensure device is down before rename
2018-05-16 10:54:47 -05:00
Dan Williams
731298003c plugins/testutils: pass CNI_CONTAINERID to plugins in testcases
Recent CNI specification changes require the container ID on ADD/DEL,
which the testcases were not providing.  Fix that up so things work
when this repo gets CNI revendored.
2018-04-26 11:24:30 -05:00
Fabian Ruff
eb410208cb host-device: Ensure device is down before rename
If the device is in state up trying to set the name fails with "device or resource busy"
2018-04-25 20:39:23 +02:00
Dan Williams
1df359a210
Merge pull request #144 from squeed/build-fixes
build: some small improvements; bump to go1.10
2018-04-25 10:41:32 -05:00
Casey Callendrello
adba9ec16e
Merge pull request #138 from m1093782566/runtime-config
traffic shaping: take configuration via a runtimeConfig
2018-04-25 17:09:41 +02:00
Lion-Wei
4a0971bcd8 update integration test configlist 2018-04-19 10:08:25 +08:00
m1093782566
7cf02869ec traffic shaping: take configuration via a runtimeConfig 2018-04-13 10:57:17 +08:00
Casey Callendrello
aade7b93ee build: some small improvements; bump to go1.10
- bump to go 1.10
- Add a linker tag with the build version
- Remove fastbuild, go builds are cached now
- Use better ginkgo suite names
2018-04-12 16:59:51 +02:00
Dan Williams
bb1e8d10a7
Merge pull request #143 from containernetworking/v0.7
Merge v0.7.1 fix into master
2018-04-12 09:21:42 -05:00
Dan Williams
0dba9daee0
Merge pull request #136 from s1061123/add_static
plugins: add static CNI plugin
2018-04-12 06:34:52 -05:00
Dan Williams
e4f13535ab
Merge pull request #131 from squeed/no-delete-ns
pkg/ns: remove namespace creation (and move to testutils)
2018-04-11 13:32:32 -05:00
Casey Callendrello
26dafaa097 plugins/ptp: test for valid data in Interfaces field 2018-04-11 15:19:20 +02:00
Casey Callendrello
13e6a4b2ba plugins/bridge: Make stricter assertions about the return data 2018-04-11 15:10:39 +02:00
Casey Callendrello
a0eac8d7d9 pkg/ns: remove namespace creation (and move to testutils)
Namespace creation had an unergonomic interface and isn't used, except
for testing code. Remove it; downstream users should really be creating
their own namespaces
2018-04-03 18:56:25 +02:00
Tomofumi Hayashi
263ff063a6 Add static CNI plugin
This changes to add 'static' CNI plugin, which provides to assign
IPv4/v6 address statically from given config file. See README.md
for the details.
2018-03-29 14:10:04 +09:00
Dan Williams
e590fca5ae
Merge pull request #130 from jingax10/fix_typo_branch
Fix a typo in PTP plugin comment, i.e., s/IFF_POINTOPONT/IFF_POINTTOPOINT.
2018-03-21 08:28:55 -05:00
Jing Ai
00fbba085e Fix a typo s/IFF_POINTOPONT/IFF_POINTTOPOINT. 2018-03-15 22:47:54 -07:00
Tyler Schultz
fe0cf201f8 Safely print error
Format plugin code

Signed-off-by: Aidan Obley <aobley@pivotal.io>
2018-03-12 15:53:23 -07:00
Aidan Obley
d2f6472474 Ensure the bandwith plugin chooses the host veth device
When chained with a plugin that returns multiple devices, the bandwidth
plugin chooses the host veth device.

Signed-off-by: Tyler Schultz <tschultz@pivotal.io>
2018-03-12 15:08:53 -07:00
Gabe Rosenhouse
90252c30fb meta/bandwidth: package main so we can build a binary 2018-02-27 22:24:26 -08:00
Gabe Rosenhouse
59fa37252f meta/bandwidth: group and sort imports
ref: https://github.com/golang/go/wiki/CodeReviewComments#imports
2018-02-27 20:47:42 -08:00
Gabe Rosenhouse
dce91d11d6 meta/bandwidth: remove boilerplate comments 2018-02-27 20:47:41 -08:00
DennisDenuto
b78e535055 plugins/meta/bandwith: traffic shaping plugin
Add chained plugin to add a tbf qdisc to shape ingress/egress traffic
2018-02-27 20:47:41 -08:00
Dan Williams
372bb5e826
Merge pull request #119 from jzwlqx/master
dhcp: clean duplicated error message
2018-02-21 11:09:15 -06:00
Gabe Rosenhouse
69cc860821 bridge test: fix go vet error 2018-02-17 18:51:41 -08:00
Jizhong Jiang
fdc602c0f0 clean duplicated error message 2018-02-12 16:47:53 +08:00
Dan Williams
596480eadc dhcp: remove leases when they are released
Don't lock around the Stop() operation though, as that may take
a while and block other operations.  That may mean we call Stop()
multiple times, but the Lease object should handle that correctly
itself.
2018-02-08 11:17:38 -06:00
Dan Williams
61c3c42107 dhcp: don't try to close the lease stop channel multiple times
Fixes: https://github.com/containernetworking/plugins/issues/105
2018-02-08 11:17:38 -06:00
Dan Williams
b522ed6aae plugins/dhcp: add testcase 2018-02-08 11:17:38 -06:00
Casey Callendrello
e2f063b534
Merge pull request #88 from lyft/ipvlan-master-intf-ipam
ipvlan: support enslaving an interface returned by ipam
2018-01-31 17:17:13 +01:00
Casey Callendrello
9e5836047c
Merge pull request #104 from mzahorik/master
Append default route and process route options in compliance with RFC 3442
2018-01-31 15:08:57 +01:00
Matt Zahorik
808d4e20ae Append a default route to the CNI reply if there's a gateway advertised.
Classless static routes (DHCP option 121) are now processed first.
If CSRs exist, static routes (DHCP option 33) and the gateway default
route are ignored as per RFC 3442.
2018-01-26 10:06:26 -05:00
Paul Fisher
3468364f7e
Merge branch 'master' into ipvlan-master-intf-ipam 2018-01-25 15:06:06 -08:00
Casey Callendrello
412b6d3128
Merge pull request #111 from s1061123/add_procfsprefx
Add -hostprefix in DHCP daemon to run the daemon as container
2018-01-25 12:00:51 +01:00
Tomofumi Hayashi
9604565b22 Add -hostprefix in DHCP daemon to run the daemon as container
This diff adds -hostprefix option in dhcp daemon. This option
could be used to run dhcp daemon as container because container
cannot touch host's netns directly. The diff changes dhcp daemon
to touch procfs mounted to another path, like '/hostfs/proc'.
2018-01-25 02:00:43 +09:00
Bryan Boreham
2a0736c748
Merge pull request #97 from oilbeater/fix/link-leak
delete link and ip if err when cmdAdd to avoid resource leak.
2018-01-24 16:38:44 +00:00
Casey Callendrello
2eba56ad52
Merge pull request #100 from squeed/range-arg
ipam/host-local: Accept ip ranges as a runtime argument
2018-01-24 15:45:39 +01:00
Casey Callendrello
c42470bc79
Merge pull request #110 from dcbw/host-device-honor-ifname
host-device: respect CNI_IFNAME/args.IfName
2018-01-19 19:05:29 +01:00
Dan Williams
ffc591e242 host-device: respect CNI_IFNAME/args.IfName
On ADD save the host device's name into its IFLA_ALIAS property and
rename the device to the requested CNI_IFNAME inside the container
to conform to the CNI specification.  On DEL rename the device to
the original name and move it back into the host namespace.
2018-01-17 14:30:22 -06:00
Jing Ai
8ebea58550 Update IPVLAN modes by adding l3s in README. 2018-01-12 12:06:48 -08:00
Paul Fisher
5c7e7c0913 ipvlan: support chaining for master interface and IP configuration
For IP allocation schemes that cannot be interface agnostic, the
ipvlan plugin can be chained with an earlier plugin that handles this
logic. If "master" is omitted from the ipvlan configuration, then the
previous Result must contain a single interface name for the ipvlan
plugin to enslave. If "ipam" is omitted, then the previous Result is
used to configure the ipvlan interface.
2017-12-23 10:59:48 -08:00
Casey Callendrello
b03d23a4fa ipam/host-local: Accept ip ranges as a runtime argument
This allows for the runtime to dynamically request IP ranges.

Fixes: #95
2017-12-11 13:51:01 +01:00
oilbeater
1f02326d56 delete link and ip if err when cmdAdd to avoid resource leak. 2017-11-27 15:26:07 +08:00
Dan Williams
92c634042c
Merge pull request #93 from squeed/host-device
plugins/main/host-device: generate result, fix DEL, other cleanups
2017-11-22 10:09:32 -06:00
Casey Callendrello
2c05055101
Merge pull request #81 from squeed/portmap-hairpin
portmap: support hairpin, improve performance
2017-11-15 17:34:35 +01:00
Casey Callendrello
5e830efb20 plugins/main/host-local: generate result, fix DEL, other cleanups
This plugin needed some cleaning up: it didn't generate output, and
didn't test DEL. Add those things, plus a README.
2017-11-15 16:00:32 +01:00
Casey Callendrello
d07d2aaf71 plugins/host_device: move to "main" folder 2017-11-13 18:50:20 +01:00
Rakesh Kelkar
47668f6d64 host-local: Update host-local IPAM to support Windows 2017-11-11 15:17:45 -08:00
Gabriel Rosenhouse
99f6be0319 Enable Windows CI (Appveyor)
- start list of linux_only plugins; ignore them when testing on Windows
- Isolate linux-only code by filename suffix
- Remove stub (NotImplemented) functions
- other misc. fixes for Windows compatibility
2017-11-10 08:09:29 -08:00
Casey Callendrello
5576f3120e portmap: support hairpin, improve performance
This change improves the performance of the portmap plugin and fixes
hairpin, when a container is mapped back to itself.

Performance is improved by using a multiport test to reduce rule
traversal, and by using a masquerade mark.

Hairpin is fixed by enabling masquerading for hairpin traffic.
2017-11-10 16:56:52 +01:00
Paul Fisher
4779f1d2bf ipvlan: support enslaving an interface returned by ipam
For IP allocation schemes that cannot be interface agnostic, master can be set
to "ipam". In this configuration, the IPAM plugin is required to return a single
interface name for the ipvlan plugin to enslave.
2017-11-01 10:14:04 -07:00
Roman Mohr
cc71426592 Don't let DHCP delete fail on missing lease
There are at least two reasons why a lease is not present:

 * The dhcp ipam daemon was restarted
 * On add the IPAM plugin failed

Don't fail the IPAM invocation when the lease is not present, to allow
proper device cleanup on CNI delete invocations.
2017-10-11 14:29:16 +02:00
Gabriel Rosenhouse
c238c93b5e host-device plugin: result is valid JSON
test:
- feed valid config JSON to plugin
- execute plugin inside the namespace with the test device
2017-09-12 21:01:58 -07:00
Gabriel Rosenhouse
25ca6ccb52 host-device: do not swallow netlink errors 2017-09-12 20:53:35 -07:00
Lantao Liu
5e46a66c89 Fix go get github.com/containernetworking/plugins.
Signed-off-by: Lantao Liu <lantaol@google.com>
2017-09-12 05:08:38 +00:00
Casey Callendrello
6be2e8a0e2 Merge pull request #3 from trusch/master
added host-device plugin which adds a specified link to container
2017-09-11 18:51:21 +02:00
Gabriel Rosenhouse
d8f2fd7a3c testing: move echosvr into testutils 2017-09-06 19:10:48 -07:00
Dan Williams
1396ab0bab Merge pull request #63 from squeed/v6-fixes
Fix ipmasq teardown on v6-only interfaces
2017-09-06 15:36:24 -05:00
Casey Callendrello
7a62515407 pkg/ip: Fix ipmasq teardown on v6-only interfaces 2017-09-06 20:02:41 +02:00
Gabriel Rosenhouse
008024125a portmap integration test: echo server runs in separate process
this way we're not mixing goroutines and namespaces
2017-09-05 23:36:12 -07:00
Gabe Rosenhouse
2f957864ea host-local disk backend store uses FileLock by reference
- this change fixes go vet warnings for the package
2017-08-30 06:52:29 -07:00
Casey Callendrello
a124fb36e6 bridge: various fixes
* Don't set the MAC, send gratuitous arp instead
* Set the bridge's MAC to itself
* Only disable DAD when necessary
2017-08-28 18:12:49 +02:00
Dan Williams
7480240de9 Merge pull request #50 from squeed/host-local-multi
ipam/host-local: support sets of disjoint ranges
2017-08-11 11:59:55 -05:00
Casey Callendrello
27d027a6d3 ipam/host-local: support sets of disjoint ranges
In real-world address allocations, disjoint address ranges are common.
Therefore, the host-local allocator should support them.

This change still allows for multiple IPs in a single configuration, but
also allows for a "set of subnets."

Fixes: #45
2017-08-09 19:02:08 +02:00
Dan Williams
998a0f6c6a tuning: pass prevResult through 2017-07-26 14:39:01 -05:00
Tom Denham
a714098daf Merge pull request #35 from dnardo/bridge-plugin
bridge: add support for promiscuous mode
2017-07-12 08:30:00 -07:00
Casey Callendrello
3745ee2d3f plugins/portmap: fix test flake
The source address selection was random, and sometimes we picked a
source address that the container didn't have a route to. Adding a
default route fixes that!
2017-07-06 16:12:24 +02:00
Dan Williams
0b9dbef185 ptp: fix testcase for Interface int-pointer changes 2017-07-05 16:26:19 -05:00
Daniel Nardo
9d08b04a3a bridge: add support for promiscuous mode 2017-07-05 09:51:10 -07:00
Casey Callendrello
a690f775ae Merge pull request #25 from squeed/ptp-v6
ptp: add ipv6 support
2017-07-05 17:30:23 +02:00
Casey Callendrello
3daee3214d ptp: add ipv6 support
* Wait for addresses to leave tentative state before setting routes
* Enable forwarding correctly
* Set up masquerading according to the active protocol
2017-06-30 12:06:57 +02:00
Dan Williams
0da6780449 pkg,plugins: update for Result struct Interface index changes
It's a pointer now, so we need to use the helper function to set
the field and also test for nil before accessing it.
2017-06-29 13:40:36 -05:00
Tino Rusch
ca3f28fa9e
host-device: cleanup + completed tests; 2017-06-29 11:44:59 +02:00
Dan Williams
5a7a8b3069 Merge pull request #24 from squeed/flannel-return
flannel: set the cniVersion on the delegated config
2017-06-28 08:45:02 -05:00
Dane LeBlanc
ffdc748861 bridge: Add support for IPv6 to bridge plugin
This change adds support for IPv6 container/pod addresses to the CNI
bridge plugin, both for dual-stack (IPv4 + IPv6) and for IPv6-only
network configurations.

The proposed changes support multiple IPv6 addresses on a container
interface. If isGW is configured, the bridge will also be configured with
gateway addresses for each IPv6 subnet.

Please note that both the dual-stack functionality and support for multiple
IPv6 container/gateway addresses depends upon containernetworking/cni
PR 451 "ipam/host-local: support multiple IP ranges".
This change could potentially be committed independently from this host-local
plugin change, however the dual-stack and multiple IPv6 address
functionality that is enabled by this change can't be exercised/tested
until the host-local plugin change is committed.

There are some IPv6 unit test cases that are currently commented out
in the proposed changes because these test cases will fail without the
prior commits of the multiple IP range host-local change.

This pull request includes a temporary workaround for Kubernetes
Issue #32291 (Container IPv6 address is marked as duplicate, or dadfailed).
The problem is that kubelet enables hairpin mode on bridge veth
interfaces. Hairpin mode causes the container/pod to see echos of its
IPv6 neighbor solicitation packets, so that it declares duplicate address
detection (DAD) failure. The long-term fix is to use enhanced-DAD
when that feature is readily available in kernels. The short-term fix is
to disable IPv6 DAD in the container. Unfortunately, this has to be done
unconditionally (i.e. without a check for whether hairpin mode is enabled)
because hairpin mode is turned on by kubelet after the CNI bridge plugin
has completed cmdAdd processing. Disabling DAD should be okay if
IPv6 addresses are guaranteed to be unique (which is the case for
host-local IPAM plugin).
2017-06-21 12:47:38 -04:00
Casey Callendrello
8c5e754617 flannel: set the cniVersion on the delegated config
Fixes: #23
2017-06-16 19:04:07 +02:00
Casey Callendrello
5bbff37294 Merge pull request #16 from squeed/gratuitous-arp
ptp, macvlan: don't change mac address; send gratuitous arp
2017-06-16 18:34:37 +02:00
Casey Callendrello
485f151536 Merge pull request #22 from squeed/portmap-plugin
portmap: Don't accept a port number of 0
2017-06-16 18:33:40 +02:00
Gabe Rosenhouse
494053dd98 Merge pull request #11 from dcbw/dhcp-pidfile
dhcp: add --pidfile option to DHCP client daemon
2017-06-15 22:48:42 -07:00
Casey Callendrello
83ec9bb73f portmap: Don't accept a port number of 0
This also adds more testing around configuration parsing.
2017-06-15 14:00:04 +02:00
Dan Williams
a38dd5f7a0 dhcp: add --pidfile option to DHCP client daemon 2017-06-14 21:41:43 -05:00
Casey Callendrello
2e9e87732f ipam/host-local: support multiple IP ranges
This change allows the host-local allocator to allocate multiple IPs.
This is intended to enable dual-stack, but is not limited to only two
subnets or separate address families.
2017-06-12 21:14:44 +02:00
Casey Callendrello
e76165b44f ptp, macvlan: don't change mac address; send gratuitous arp 2017-06-07 16:08:41 +02:00
Casey Callendrello
43a24515ee build: some minor post-repo-split fixes; add fastbuild 2017-06-01 18:51:46 +02:00
Casey Callendrello
a7aaf0e377 plugins/meta/portmap: add an iptables-based host port mapping plugin 2017-06-01 10:06:28 +02:00