{"action":"opened","issue":{"url":"https://api.github.com/repos/romana/romana/issues/152","repository_url":"https://api.github.com/repos/romana/romana","labels_url":"https://api.github.com/repos/romana/romana/issues/152/labels{/name}","comments_url":"https://api.github.com/repos/romana/romana/issues/152/comments","events_url":"https://api.github.com/repos/romana/romana/issues/152/events","html_url":"https://github.com/romana/romana/issues/152","id":192169937,"number":152,"title":"Make IPAM topology aware","user":{"login":"jbrendel","id":233741,"avatar_url":"https://avatars.githubusercontent.com/u/233741?v=3","gravatar_id":"","url":"https://api.github.com/users/jbrendel","html_url":"https://github.com/jbrendel","followers_url":"https://api.github.com/users/jbrendel/followers","following_url":"https://api.github.com/users/jbrendel/following{/other_user}","gists_url":"https://api.github.com/users/jbrendel/gists{/gist_id}","starred_url":"https://api.github.com/users/jbrendel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbrendel/subscriptions","organizations_url":"https://api.github.com/users/jbrendel/orgs","repos_url":"https://api.github.com/users/jbrendel/repos","events_url":"https://api.github.com/users/jbrendel/events{/privacy}","received_events_url":"https://api.github.com/users/jbrendel/received_events","type":"User","site_admin":false},"labels":[{"id":287152377,"url":"https://api.github.com/repos/romana/romana/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/romana/romana/milestones/1","html_url":"https://github.com/romana/romana/milestones/1.0","labels_url":"https://api.github.com/repos/romana/romana/milestones/1/labels","id":1546808,"number":1,"title":"1.0","description":"","creator":{"login":"chrismarino","id":504115,"avatar_url":"https://avatars.githubusercontent.com/u/504115?v=3","gravatar_id":"","url":"https://api.github.com/users/chrismarino","html_url":"https://github.com/chrismarino","followers_url":"https://api.github.com/users/chrismarino/followers","following_url":"https://api.github.com/users/chrismarino/following{/other_user}","gists_url":"https://api.github.com/users/chrismarino/gists{/gist_id}","starred_url":"https://api.github.com/users/chrismarino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrismarino/subscriptions","organizations_url":"https://api.github.com/users/chrismarino/orgs","repos_url":"https://api.github.com/users/chrismarino/repos","events_url":"https://api.github.com/users/chrismarino/events{/privacy}","received_events_url":"https://api.github.com/users/chrismarino/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":0,"state":"open","created_at":"2016-01-27T17:50:51Z","updated_at":"2016-11-29T02:13:53Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2016-11-29T02:13:53Z","updated_at":"2016-11-29T02:13:53Z","closed_at":null,"body":"Scenario: Someone wishes to deploy a Romana cluster across multiple L2 domains. For example: Multiple AWS VPCs, or multiple L2 domains in a datacenter (maybe multiple racks with a ToR on top).\r\n\r\n- IPAM/topology need to know that there are different L2 domains. As a config item, the number of L2 domains and the max number of hosts in each L2 domain can be specified. For starters, we can assume that the max number of hosts in each L2 domain is the same.\r\n- IPAM needs to calculate which Romana address range is to be used for each L2 domain.\r\n- Via command line and API it should be possible for the operator to see the configured L2 domains and the Romana address ranges, which have been assigned to them. This is useful for the operator who needs to take this information in order to manually configure some routes.\r\n- It should be possible to add L2 domains to IPAM's config ahead of time, even way before any nodes in a given L2 actually want to join the cluster. But at the same time, it should be possible to add a new L2 domain after the fact. This may possibly be solved by saying: With this many hosts per L2 domain, we can have at most X L2 domains. So, we always go ahead and assume that there will be X L2 domains. Need to discuss this a little.\r\n- IPAM needs to learn to keep track of IP addresses on a per L2 domain basis.\r\n- When a new node joins the cluster, there should be some useful information in the join-request, which can tell us what L2 domain that host is in. This could be a number of things and may be different based on the environment. For example, it could be the node IP address, or some tag that is gleaned from an environment variable or config file when the request is made. We need to be a little flexible here. The tag could be retrieved via a startup script and environment variable in AWS. In other environments... not sure yet.\r\n- IPAM needs to be configured with some advanced knowledge to use the correct information contained in the request in order to determine which L2 domain the new node is located in. Maybe we can just say: Either source address or some tag in the join request.\r\n- The agents need to be modified to only add host routes to other hosts in its own L2 domain. Everything else is done via the default route."}}
{"actor":{"display_login":"jbrendel"}}