Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Windows] Implement Windows host configuration #373

Merged
merged 1 commit into from
Mar 22, 2020

Conversation

wenyingd
Copy link
Contributor

  1. Create Transarent HNS Network in agent initialization.
  2. Use netroute to configure routing rules when new Node join the
    cluster on Windows.
  3. Extract OS specific functions under pkg/agent to seperate files.
  4. Move iptables configuraitons to prepare host networking stage,
    and Windows creates HNS Network at the same stage.

@antrea-bot
Copy link
Collaborator

Thanks for your PR.
Unit tests and code linters are run automatically every time the PR is updated.
E2e, conformance and network policy tests can only be triggered by a member of the vmware-tanzu organization. Regular contributors to the project should join the org.

The following commands are available:

  • /test-e2e: to trigger e2e tests.
  • /skip-e2e: to skip e2e tests.
  • /test-conformance: to trigger conformance tests.
  • /skip-conformance: to skip conformance tests.
  • /test-networkpolicy: to trigger networkpolicy tests.
  • /skip-networkpolicy: to skip networkpolicy tests.
  • /test-all: to trigger all tests.
  • /skip-all: to skip all tests.

These commands can only be run by members of the vmware-tanzu organization.

@wenyingd wenyingd mentioned this pull request Feb 10, 2020
21 tasks
@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 20eed21 to 0fe9324 Compare February 11, 2020 09:21
@wenyingd
Copy link
Contributor Author

/test-all

Copy link
Contributor

@jianjuns jianjuns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We merged the noencap PR today. I guess you need to rebase your branch and adjust the files for your two PRs.

pkg/agent/agent.go Outdated Show resolved Hide resolved
pkg/agent/agent.go Outdated Show resolved Hide resolved
}

// prepareHostNetworking returns immediately on Linux.
func (i *Initializer) prepareHostNetworking() error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think it makes sense to create a separate interface for OS specific funcs which have different implementations for different OSes, rather than reusing Initializer?
The benefit is reader can easily figure out the OS specific funcs. I am not very sure if it is right way in Go or not.
@tnqn

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So far I see a lot of such cases in K8s are done via _OS.go approach, the reason in my mind is:

  • clean code, no need to have branch/options to switch implementation

  • bit size saving (even in interface way, we shouldn't and can't compile windows impl in linux bit, so there's going to be _OS.go anyway, then why it needs to have an option to select OS based implementation?)

  • it can do more and has less requirement (the different part can be a function, a variable, a struct) while interface way requires well-designed interfaces and strongly consistent code on interface consumer side.

But I haven't experienced this before, I will take a look at more Go projects and suggest.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if I got all your mean. But even we have an interface, we can still achieve what you said (no extra branch/option, the interface implementation can still be in _OS.go)? If the interface implementation is in the same package then almost no difference from convenience perspective?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but having this interface or not is not related to OS implementation but whether we want to make it abstract. I'm not against abstracting interface, just prefer not calling platform specific functions with platform specific names on main path.
For example, having a generic function setupExternalNetworking to call i.iptablesClient.Initialize in host_configuration_linux.go looks better to me than calling i.iptablesClient.Initialize directly with a dummy implementation on main path.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed on what you said, we should define generic interface/funcs rather than OS specific ones like iptablesXYZ.

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 0fe9324 to 87b0a77 Compare February 12, 2020 13:59
@wenyingd wenyingd changed the base branch from master to windows February 13, 2020 01:44
@wenyingd wenyingd force-pushed the windows_hostConfiguration branch 2 times, most recently from fcccd93 to 04bcf44 Compare February 13, 2020 15:29
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 04bcf44 to 89f7989 Compare February 17, 2020 04:17
@wenyingd wenyingd changed the title Implement Windows host configuraiton [WIP] Implement Windows host configuraiton Feb 17, 2020
@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 89f7989 to 1129c1b Compare February 17, 2020 05:19
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 1129c1b to 5389252 Compare February 17, 2020 07:21
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd changed the title [WIP] Implement Windows host configuraiton [Windows] Implement Windows host configuraiton Feb 17, 2020
@wenyingd wenyingd changed the title [Windows] Implement Windows host configuraiton [Windows] Implement Windows host configuration Feb 17, 2020
Copy link
Member

@tnqn tnqn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, some comments inline

pkg/agent/host_configuration_unix.go Outdated Show resolved Hide resolved
pkg/agent/iptables/iptables_unix.go Outdated Show resolved Hide resolved
pkg/agent/host_configuration_unix.go Outdated Show resolved Hide resolved
pkg/agent/route/route_windows.go Outdated Show resolved Hide resolved
pkg/agent/route/route_windows.go Outdated Show resolved Hide resolved
@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 5389252 to 9c948b5 Compare February 18, 2020 11:48
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 9c948b5 to efb8384 Compare February 19, 2020 11:43
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from efb8384 to c66ba1c Compare February 20, 2020 14:39
@wenyingd
Copy link
Contributor Author

/test-all

"k8s.io/klog"
)

func (c *Controller) reconcileIPTables() error {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the single remaining IPTables logic in main path, could we replace it with a generic function name like others

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1.

To make the code simpler, do you think we can keep the loop for Windows as well, but just change c.iptablesClient.AddPeerCIDR to allowTrafficToPeerCIDR? And then we could even remove node_route_controller_os.go and put allowTrafficToPeerCIDR to host_configuration_os.go?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the two functions in node_route_controller_os are both to call iptables. If we only keep a single file without any OS suffix, the code would be simpler(it is also the previous version of this PR), but iptables functions will be invoked on Windows. Althought it would be no error returned since I have implemented a dummy implementation on Windows, but it still needs an extra invocation. So I think it should be a trade-off. What's your opinion, @jianjuns @tnqn ?

pkg/agent/host_configuration_windows.go Outdated Show resolved Hide resolved
pkg/agent/iptables/iptables_unix.go Outdated Show resolved Hide resolved
pkg/agent/route/route_unix.go Outdated Show resolved Hide resolved
pkg/agent/controller/noderoute/node_route_controller.go Outdated Show resolved Hide resolved
"k8s.io/klog"
)

func (c *Controller) reconcileIPTables() error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1.

To make the code simpler, do you think we can keep the loop for Windows as well, but just change c.iptablesClient.AddPeerCIDR to allowTrafficToPeerCIDR? And then we could even remove node_route_controller_os.go and put allowTrafficToPeerCIDR to host_configuration_os.go?

}

// allowTrafficToPeerCIDR adds iptables rules relevant to peerPodCIDR.
func (c *Controller) allowTrafficToPeerCIDR(peerPodCIDR *net.IPNet, peerNodeIP net.IP) error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about name it allowNodeToPeerCIDRTraffic?

Another question - do you think we should change Linux to SNAT in OVS too, so to unify Windows and Linux? @tnqn

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will rename the function.

@@ -0,0 +1,30 @@
package iptables
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would agree with what @tnqn said - do not create dummy funcs if they are not needed for an OS.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I now feel we should create an interface like TrafficFilterClient:

  • put the New() func in agent_os.go
  • move allowNodeToPeerCIDRTraffic to this interface.
  • let iptablesClient implements the interface.

Then we can remove iptables_windows.go (change it to traffic_filter_windows.go).

What you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jianjuns I don't think we could remove iptables_windows.go(or traffic_filter_windows.go) even if we define an interface. Since "iptables" is a Linux specific library, all functions calling this library should be placed in file with _linux suffix, otherwise it should break compiling on Windows. If so, function "allowNodeToPeerCIDRTraffic" must have separate implementations with different OS type, and the WIndows implementation might be an empty function. So do other functions we plan to in the interface.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I am not saying we can remove traffic_filter_windows.go. I am just saying we should not call it iptables_windows.go, and if we have an interface, it just includes a single func of allowNodeToPeerCIDRTraffic().

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

traffic_filter_windows.go should include the implementation of allowNodeToPeerCIDRTraffic().

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could rename the file as 'traffic_filter_windows.go'.

allowNodeToPeerCIDRTraffic() should not be the single method of the interface. These methods are required outside package "iptables" on Linux Node: 1) NewClient(), 2) Initialize, 3) Reconcile, 4) AllowNodeToPeerCIDRTraffic. If we define an interface and return it in function "NewClient", all above functions should be defined in the interface, and the OS specific implementations must be privoded.

We have no such functions in current _windows.go file is because we returned the struct directly, and no other functions except for "NewClient" are called outside "iptables" on Windows .

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you need Initialize() at least. NewClient() should not be defined in the interface, but could be in agent_os.go.

For Reconcile() I was thinking you might convert the trafficFilter interface to iptablesClient in node_route_controller_windows.go, and call iptablesClient.reconcile() directly. But if you think that is strange, and not many other funcs, we might add Reconcile() to the interface.

pkg/agent/util/net_windows.go Outdated Show resolved Hide resolved
pkg/agent/host_configuration_unix.go Outdated Show resolved Hide resolved
pkg/agent/util/net_unix.go Outdated Show resolved Hide resolved
}

// setupExternalNetworking setups iptables chains and rules.
func (i *Initializer) setupExternalNetworking() error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think can be merged into prepareHostNetworking()?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can't be merged into prepareHostNetworking() if we planned to do SNAT with OpenFlow, for the OVS is not ready when preparing Host Networking on Windows.

But if we could change to use Windows NAT utilities to provide SNAT, it would be OK to merge them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. Do you think it can be a good idea to make SNAT by OVS a separate option if it works on Linux as well? But I guess let us keep your current implementation first.

// See the License for the specific language governing permissions and
// limitations under the License.

package util
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tnqn: do you think we can mvoe files in util/ethtool/ and net_os.go to a single pkg util/net/?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, they sounds close.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I now feel stronger we should put net_os.go to util/net, and maybe move ethtool files there too. We added more and more funcs here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I plan to move them after this PR and policy only PR is checked in, don't want to make them have to solve conflicts again.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good.

@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from 3331efe to a33e952 Compare March 17, 2020 14:47
@ruicao93
Copy link
Contributor

/test-all

Copy link
Member

@tnqn tnqn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A minor comment

pkg/agent/route/route_windows.go Outdated Show resolved Hide resolved
pkg/agent/util/net_windows.go Outdated Show resolved Hide resolved
}

// PrepareHostNetworking creates HNS Network for containers.
func PrepareHostNetworking(subnetCIDR *net.IPNet, nodeIPNet *net.IPNet) error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure this one and enableHNSOnOVS() should be put inside package util. They sound like some application logics but not utilities?
Should we still have the agent_windows.go? @tnqn

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to the offline disscussion we had last week, I remove the call of function PrepareHostNetworking from agent.go, and plan to move it to Antrea-Service, that's why I move the function to utils(If it is still not proper, I think a choice is to move it to Antrea-Service). Then the only function differentiates OS in agent should be SNAT. Quan has moved iptables-SNAT to routeClient initialization. Windows is using OpenFlow to provide this feature, and I didn't want to add OFClient as a property of routeClient. So agent_window might be added back in "SNAT" PR.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, you mean you want to move PrepareHostNetworking() to Service later, or keep it in Agent? If we keep it Agent, I feel it should not be in util, and agent_windows.go is better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is planned to move to Service.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have other similar funcs in service code?
In dev env, if we do not have a service, how could we prepare the network before Agent runs?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. I now feel from convenience perspective, seems the logic in agent is more convenient. So, I wonder do we have similar cases in service now (I remember no).
If we anyway will have agent_windows.go for other funcs like NAT, we might put this one there too?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, we only have three functions planned to be in Service: 1) Start/Monitor Agent, 2) Prepare environment including HNS Network; 3) Monitoring ovs-vswitchd service, and recover host network when OVS is down.

No other funcs like PrepareHostNetworking are in Service.

A bad effect for placing PrepareHostNetworking in Agent is, it will make Agent behavior on Windows different from Linux.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume 2) and 3) (recover host network when OVS is down) are not really relevant right, or 3) is to recover what are changed in 2)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my opinion, the latter is a correct relation between 2) and 3), as OVS takes over Windows host network is because of 2), and when OVS is down, the host network should be controlled by Windows system.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. Then it makes to move them to service.

// See the License for the specific language governing permissions and
// limitations under the License.

package util
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I now feel stronger we should put net_os.go to util/net, and maybe move ethtool files there too. We added more and more funcs here.

1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
@wenyingd wenyingd force-pushed the windows_hostConfiguration branch from a33e952 to ebd18aa Compare March 19, 2020 05:32
@wenyingd
Copy link
Contributor Author

/test-all

@wenyingd wenyingd merged commit 4b5d6e7 into antrea-io:windows Mar 22, 2020
wenyingd added a commit that referenced this pull request Mar 22, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit that referenced this pull request Mar 24, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit that referenced this pull request Mar 30, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit that referenced this pull request Mar 31, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit that referenced this pull request Apr 8, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
@wenyingd wenyingd deleted the windows_hostConfiguration branch April 24, 2020 02:16
wenyingd added a commit that referenced this pull request May 6, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit to wenyingd/antrea that referenced this pull request May 7, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit to wenyingd/antrea that referenced this pull request May 8, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
wenyingd added a commit that referenced this pull request May 11, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
ruicao93 pushed a commit to ruicao93/antrea that referenced this pull request May 25, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.
ruicao93 pushed a commit to ruicao93/antrea that referenced this pull request May 25, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
ruicao93 pushed a commit to ruicao93/antrea that referenced this pull request May 27, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
ruicao93 pushed a commit to ruicao93/antrea that referenced this pull request May 27, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
ruicao93 pushed a commit to ruicao93/antrea that referenced this pull request May 27, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
ruicao93 pushed a commit that referenced this pull request May 27, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
McCodeman pushed a commit to McCodeman/antrea that referenced this pull request Jun 2, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
McCodeman pushed a commit that referenced this pull request Jun 2, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
GraysonWu pushed a commit to GraysonWu/antrea that referenced this pull request Sep 22, 2020
1. Create Transarent HNS Network in agent initialization.
2. Use netroute to configure routing rules when new Node join the
cluster.
3. Extract OS specific functions under pkg/agent to seperate files.
4. Move iptables configuraitons to prepare host networking stage,
   and Windows create HNS Network at the same stage.

Signed-off-by: Rui Cao <rcao@vmware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants