Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Add AWSVPC #2341

Merged
merged 10 commits into from
Jun 8, 2016
Merged

Add AWSVPC #2341

merged 10 commits into from
Jun 8, 2016

Conversation

brb
Copy link
Contributor

@brb brb commented Jun 7, 2016

Please be aware that all the necessary enhancements are listed in #2322.

@bboreham bboreham self-assigned this Jun 7, 2016
@bboreham bboreham mentioned this pull request Jun 7, 2016
@@ -540,11 +544,11 @@ func TestClaimForPeers(t *testing.T) {
// Different end to usual so we get a number of addresses that a)
// is smaller than the max number of peers, and b) is divisible by
// some number of peers. This maximises coverage of edge cases.
end := dot10
end := dot8

This comment was marked as abuse.

This comment was marked as abuse.

@bboreham bboreham force-pushed the issues/2017-awsvpc branch from 7c58774 to 758445f Compare June 7, 2016 15:41
@@ -1285,6 +1286,13 @@ ipam_cidrs() {
allocate)
METHOD=POST
CHECK_ALIVE="?check-alive=true"
# If we get an error here, we skip applying necessary steps for AWSVPC, because
# "attach" should work without the weave router running.
[ "$(call_weave GET /ipinfo/tracker)" != "awsvpc" ] || AWSVPC=1

This comment was marked as abuse.

This comment was marked as abuse.

@bboreham bboreham force-pushed the issues/2017-awsvpc branch 2 times, most recently from d29afb5 to 686a109 Compare June 7, 2016 16:18
brb and others added 10 commits June 8, 2016 16:44
An instance of the interface must implement the HandleUpdate method
which (in the future) will be called when any change to the IPAM ring
occurs.
The tracker is responsible for managing the AWSVPC route tables
which is used to implement the underlay routing based on VPC.
The tracker's HandleUpdate method is called by the ring update routines.

In addition, we add a dummy overlay for AWSVPC to make `weave (status|
report)` to produce reasonable reports which includes AWS hosts
connection state.
The endpoint returns the name of tracker. It is used to determine
whether the router is running a tracker.
When running in the AWSVPC mode, we need to do the following:

- Keep the HW TX offloading on.
- Check that the allocated address belongs to the default subnet,
  because only one subnet is allowed and it should be the default one.

If it is not possible to determine whether AWSVPC is on, we ignore
all the steps, because the attachment routines have to work
regardless whether the router is running and the AWSVPC detection
is done by querying the /ipinfo/tracker endpoint served by
the router.
This requires the following additional steps:

- Setting proxy_arp on on the bridge, because that's how we do
  the routing (check the comment at the place where we set it on).
- Disable ARP requests queueing, because it introduces unnecessary
  delay for the first ARP request resulting in a high latency of
  the first packet (on t2.micro machines I've encountered ~700ms
  latency). Also, the queue is bounded, so we might risking to drop
  the requests.
Otherwise it will use the regular weavewait program which wait for the
multicast route to be added.
@bboreham bboreham force-pushed the issues/2017-awsvpc branch from 9eb3249 to c77b2e8 Compare June 8, 2016 15:45
@bboreham bboreham merged commit cf87a84 into master Jun 8, 2016
@bboreham bboreham mentioned this pull request Jun 9, 2016
@awh awh added this to the 1.6.0 milestone Jun 9, 2016
@bboreham bboreham deleted the issues/2017-awsvpc branch November 9, 2016 17:20
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants