Dmitry Sutyagin also replied, quote:
Afaik, iptables are set by Nova, and the driver is set via firewall_driver
option in nova.conf
After some investigation, I am thinking both Nova and Neutron provide
security_group implementation, while Nova operates on vm granularity and Neuton
operates on port.
In my openstack environment, I see firewall_driver =
nova.virt.firewall.NoopFirewallDriver in nova.conf and firewall_driver =
neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver in
ml2_conf.ini. So it seems I'm using Neutron's security_group implementation.
Back to my question, I tried to name qbr, qvo, qvb as qbr1234567890, ... and,
container side veth as veth0, qbr side veth as tap1234567890. As a result, no
iptables rules added, therefore packets from veth0 are dropped on qbr1234567890.
So, how would Neutron know that it has to add iptables rules for a device, by
device name prefix or what? What can I do to let it happen?
Regards,
Dastan
------------------ Original ------------------
From: "Kevin Benton"<ke...@benton.pub>;
Date: Wed, May 24, 2017 05:21 AM
To: "duhongwei"<duhong...@qiniu.com>;
Cc: "openstack"<openstack@lists.openstack.org>; "Vallachorum
Tyranorum"<ardeleandanflo...@gmail.com>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
Neutron sets up the iptables rules if you have security groups enabled and the
agent firewall is set to iptables_hybrid or
neutron.agent.linux.iptables_firewall:OVSHybridIptablesFirewallDriver .
What are you naming your vNIC? The iptables rules setup by the agent match
specifically on 'tap' + port UUID prefix. So if the bridge is qvb1234567890
then the vnic you plug into it needs to be named tap1234567890 .
On Tue, May 23, 2017 at 12:15 AM, duhongwei <duhong...@qiniu.com> wrote:
Thanks Kevin! I've made a big step forward!
Till now, I've successfully connect vNIC directly into br-int without qbr, qvo,
and qvb. And, it works well.
However, following your scripts (connect vNIC into qbr, then connect qbr into
br-int) exposes another problem. In this scenario, qbr won't forward packets
from vNIC to br-int (packets seem to be dropped on qbr).
After some troubleshooting, it turns out to be iptables who drops packets on
qbr. Reviewing the FORWARD chain in filter table, packets come from vNIC won't
match any rule of neutron-filter-top and neutron-openvswi-FORWARD so that the
default policy DROP applies.
So, after setting up all these qbr, qvo, qvb, vNIC, it seems there're still
some iptables rules missed. Question is,
Who's adding this iptables rules? (Nova or Neutron?) How can I make it happen?
Regards,
Dastan
------------------ Original ------------------
From: "Kevin Benton"<ke...@benton.pub>;
Date: Mon, May 22, 2017 10:47 PM
To: "duhongwei"<duhong...@qiniu.com>;
Cc: "openstack"<openstack@lists.openstack.org>; "Vallachorum
Tyranorum"<ardeleandanflo...@gmail.com>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
Yes, the only thing that needs to use the correct MAC is whatever is actually
sending traffic.
On May 21, 2017 22:06, "duhongwei" <duhong...@qiniu.com> wrote:
Thanks for your patient, Kevin.
So qvo could be any veth whose mac address doesn't matter, but veth/tap must
have exact the same mac address as port, otherwise it will be anti-spoofed.
qvo's attributes (external-ids) tell neutron which logical port qvo is
connecting, so neutron knows how to add flows to ovs br-int and br-tun.
Am I correct?
Regards,
Dastan
------------------ Original ------------------
From: "Kevin Benton"<ke...@benton.pub>;
Date: Sat, May 20, 2017 03:26 AM
To: "duhongwei"<duhong...@qiniu.com>;
Cc: "openstack"<openstack@lists.openstack.org>; "Vallachorum
Tyranorum"<ardeleandanflo...@gmail.com>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
>After all these, we create veth/tap (as vm/containers vNIC) and plugin it into
>qbr then we're able to talk with other vms/containers on the same network
>through veth/tap, am I understanding it right?
Yes, this last step of creating a veth/tap is missing from my script because I
didn't need actual dataplane communication for the tests I was doing.
>1) isn't it necessary that veth/tap's mac address same as neutron port's mac
>address?
Yeah, if you attach something to qbr to behave like the VM interface, you will
need it to be using the mac address of the neutron port, or else the neutron
anti-spoofing rules will prevent it from communicating.
>2) after we plug qvo into ovs br-int, neutron just automatically add flows
>into ovs bridge?
Yes, the agent will receive to the new port event from ovs, retrieve port
details from the server and then setup the flows.
On Fri, May 19, 2017 at 12:09 AM, duhongwei <duhong...@qiniu.com> wrote:
This script seems easy and cool!
So first we have to create a logical neutron port, then create qbr, qvo and
qvb, and plug qvb into qbr, finally plug qvo into ovs br-int. After all these,
we create veth/tap (as vm/containers vNIC) and plugin it into qbr then we're
able to talk with other vms/containers on the same network through veth/tap, am
I understanding it right?
Questions,
1) isn't it necessary that veth/tap's mac address same as neutron port's mac
address?
2) after we plug qvo into ovs br-int, neutron just automatically add flows into
ovs bridge?
Regards,
Dastan
------------------ Original ------------------
From: "Kevin Benton"<ke...@benton.pub>;
Date: Sat, May 13, 2017 07:46 AM
To: "duhongwei"<duhong...@qiniu.com>;
Cc: "openstack"<openstack@lists.openstack.org>; "Vallachorum
Tyranorum"<ardeleandanflo...@gmail.com>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
Nova is only responsible for creating the interface and plugging it into the
OVS bridge. It's the neutron agent (or alternative neutron backend like OVN)
responsible for setting up all of the flows.
Here is a hacky script that I had used to create and delete a bunch of ports
like Nova would that you can probably start with:
http://paste.openstack.org/show/609478/
On Fri, May 12, 2017 at 4:25 AM, duhongwei <duhong...@qiniu.com> wrote:
Thanks Kevin!
I'll dig into neutron.agent.linux.interface to see how it works. Before that,
would you give me any previews about what steps should be taken to add a veth
to a existed Neutron network?
Furthermore, is it Neutron who add a veth to ovs bridge or is it the Neutron
caller? (such as Nova)
Who's adding flows to ovs bridge? Neutron or caller?
Regards,
Dastan
------------------ Original ------------------
From: "Kevin Benton"<ke...@benton.pub>;
Date: Fri, May 12, 2017 10:45 AM
To: "duhongwei"<duhong...@qiniu.com>;
Cc: "openstack"<openstack@lists.openstack.org>; "Vallachorum
Tyranorum"<ardeleandanflo...@gmail.com>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
You want to look in neutron.agent.linux.interface to see how things are plugged
into OVS. That's the module used by the L3 agent to plug into OVS/linux
bridge/etc.
There is a well defined interface name format corresponding to the port ID and
the port ID, Mac address, and a couple of other things I can't recall are set
in ovsdb to help the agent identify the port as something it should care about.
On May 9, 2017 04:49, "duhongwei" <duhong...@qiniu.com> wrote:
Thanks Dan!
I have to write a customized CNI plugin for our product, so it's better if I
know more operation details about how to interact with Neutron manually
(consider myself as Nova). Therefore Kuryr is not my best option right now, but
it's cool!
Regards,
Dastan
------------------ Original ------------------
From: "Vallachorum Tyranorum"<ardeleandanflo...@gmail.com>;
Date: Tue, May 9, 2017 04:08 PM
To: "duhongwei"<duhong...@qiniu.com>;
"openstack"<openstack@lists.openstack.org>;
Subject: Re: [Openstack] How to utilize Neutron independently with veths
Hi,
Please take a look at Kuryr. Maybe this is what you are looking for.
Dan.
On Tue, May 9, 2017 at 10:17 AM duhongwei <duhong...@qiniu.com> wrote:
Hi everyone,
I'm new to OpenStack and currently interested in the Neutron part of it. What
I'm seeking is some advice about how to utilize Neutron independently, to build
a virtual network, for Docker containers maybe.
Suppose I've already got Neutron and Keystone installed on controller node and
compute nodes. I guess the following steps are required to test a virtual
network.
1) create a network
2) create a subnet
3) create two pairs of veths (each pair represents a vm)
for each pair of them:
4) create a port for one end of the veth pair (passing veth's mac address as a
parameter)
5) attach another end of the veth pair to ovs bridge
6) ping from one veth pair to another
The above is my general idea, don't know if it is correct and don't know the
operation details either.
Expecting your suggestions, any links are appreciated.
Regards,
Dastan
_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to : openstack@lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack