From: Shmulik Ladkani <shmulik.ladkani@gmail.com>
To: vyasevic@redhat.com
Cc: netdev@vger.kernel.org, shemminger@vyatta.com,
davem@davemloft.net, or.gerlitz@gmail.com, jhs@mojatatu.com,
mst@redhat.com
Subject: Re: [PATCH V2 00/12] Add basic VLAN support to bridges
Date: Wed, 19 Dec 2012 21:37:16 +0200 [thread overview]
Message-ID: <20121219213716.778d6449.shmulik.ladkani@gmail.com> (raw)
In-Reply-To: <50D1CB76.50202@redhat.com>
Hi Vlad,
On Wed, 19 Dec 2012 09:13:10 -0500 Vlad Yasevich <vyasevic@redhat.com> wrote:
> > Why the "untagged vlan" is per-bridge global?
> It's not. There is a per port untagged pointer where you can designate
> which VLAN is untagged/native on a port.
Ok (misinterpreted the text in the cover letter).
> > 802.1q switches usually allow conifguring per-vlan, per-port
> > tagged/untagged egress policy: each vid has its port membership map and
> > an accompanying port egress-policy map.
> > This gives great flexibility defining all sorts of configurations.
>
> Right, and that's what's provided here.
> * Each VLAN has port membership map (net_bridge_vlan.portgroup).
> * Each port has a list of vlans configured as well
> (net_port_vlan.vlan_list).
> * Each port also has a single vlan that can be untagged
> (net_bridge_port.untagged).
> * The bridge also has a single untagged vlan (net_bridge.untagged)
>
> The limitation (in switches as well) is that only a single VLAN
> may be untagged on any 1 port.
Switches usually allow you to configure each port's egress policy per
vlan, and allow you to configure multiple vlans to _egress_ untagged
on a port.
> If you have more then 1, you don't know
> which VLAN the untagged traffic belongs to.
The port's PVID uniquely determines VID to associate with the frame
during _ingress_ on that port - in the case frame arrived untagged.
This is unrelated to whether a frame having a specific VID would _egress_
tagged or untagged on that port.
> > Personally, I'd prefer a fully flexible vlan bridge allowing all sorts
> > of configurations (as available in 802.1q switches).
> >
> > What's the reason limiting such configurations?
>
> So, what do you see that's missing?
I suspect some configurations wouldn't be possible at current design,
please let me know what do you think.
Take for example such a configuration:
+---+---+
| | |
p1 p2 p3
A bridge with 3 ports: p1 p2 p3.
(the bridge interface itself is irrelevant for this discussion)
This setup expects all traffic at those ports to be untagged.
I'd like p1 to be bridged to p2, but not to p3.
I'd like p3 to be bridged to p2, but not to p1.
Set the following:
p1 - PVID is 1
member of VLANs 1(egress untagged), 2(egress untagged)
p3 - PVID is 3
member of VLANs 3(egress untagged), 2(egress untagged)
p2 - PVID is 2
member of VLANs 1,2,3 (all egress untagged)
Or putting it differently:
VLAN 1 ports membership: p1, p2
egress policy: U U
VLAN 2 ports membership: p1, p2, p3
egress policy: U U U
VLAN 3 ports membership: p2, p3
egress policy: U U
Now, untagged traffic arriving at p1 will be assigned its PVID, which
is 1, an thus forced to egress via p2 (the only other member of VLAN 1).
Upon egress on p2, it will egress untagged.
(similarly for ingress in p3, only egress at p2 is possible, again
untagged).
If untagged traffic arrives at p2, it will be assigned its PVID, which
is 2, and thus it may egress on either p1 or p3 (they are both members
of VLAN 2).
Actual port of egress is according to FDB match.
Again egress would be untagged.
This setup might sound exotic, but similar patterns may be used in
reality.
Although the example is synthetic and simplistic, still it demonstrates
the vast flexibility allowed by a 802.1q bridge.
The bridge constructs needed for supporting such setups are:
- per port: PVID
- per VLAN: port membership map
- per VLAN: port egress policy map
I agree, tools other than a vlan bridge may implement such setups, but
using the vlan bridge would be preferred, mainly due to the simplicity.
Regards,
Shmulik
next prev parent reply other threads:[~2012-12-19 19:46 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-18 19:00 [PATCH V2 00/12] Add basic VLAN support to bridges Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 01/12] bridge: Add vlan filtering infrastructure Vlad Yasevich
2012-12-18 21:13 ` Eric Dumazet
2012-12-18 21:26 ` Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 02/12] bridge: Validate that vlan is permitted on ingress Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 03/12] bridge: Verify that a vlan is allowed to egress on give port Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 04/12] bridge: Cache vlan in the cb for faster egress lookup Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 05/12] bridge: Add vlan to unicast fdb entries Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 06/12] bridge: Add vlan id to multicast groups Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 07/12] bridge: Add netlink interface to configure vlans on bridge ports Vlad Yasevich
2012-12-18 19:00 ` [PATCH V2 08/12] bridge: Add vlan support to static neighbors Vlad Yasevich
2012-12-18 19:01 ` [PATCH V2 09/12] bridge: Add the ability to configure untagged vlans Vlad Yasevich
2012-12-18 23:01 ` Michael S. Tsirkin
2012-12-18 23:03 ` Vlad Yasevich
2012-12-18 23:10 ` Michael S. Tsirkin
2012-12-19 14:50 ` Vlad Yasevich
2012-12-18 23:04 ` Michael S. Tsirkin
2012-12-19 1:06 ` Vlad Yasevich
2012-12-18 19:01 ` [PATCH V2 10/12] bridge: Implement untagged vlan handling Vlad Yasevich
2012-12-18 19:01 ` [PATCH V2 11/12] bridge: Dump vlan information from a bridge port Vlad Yasevich
2012-12-18 19:01 ` [PATCH V2 12/12] bridge: Add vlan support for local fdb entries Vlad Yasevich
2012-12-18 22:32 ` [PATCH V2 00/12] Add basic VLAN support to bridges Jiri Pirko
2012-12-18 22:46 ` Vlad Yasevich
2012-12-19 8:27 ` Jiri Pirko
2012-12-19 16:25 ` Vlad Yasevich
2012-12-19 17:04 ` Thomas Graf
2012-12-19 17:11 ` Vlad Yasevich
2012-12-19 17:19 ` Jiri Pirko
2012-12-19 17:20 ` Thomas Graf
2012-12-19 8:10 ` Shmulik Ladkani
2012-12-19 14:13 ` Vlad Yasevich
2012-12-19 19:37 ` Shmulik Ladkani [this message]
2012-12-19 20:03 ` Vlad Yasevich
2012-12-19 22:59 ` Vlad Yasevich
2012-12-20 7:00 ` Shmulik Ladkani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121219213716.778d6449.shmulik.ladkani@gmail.com \
--to=shmulik.ladkani@gmail.com \
--cc=davem@davemloft.net \
--cc=jhs@mojatatu.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=or.gerlitz@gmail.com \
--cc=shemminger@vyatta.com \
--cc=vyasevic@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).