[rbridge] Shared VLAN learning: What is it and why should we care?

Eric Gray (LO/EUS) eric.gray at ericsson.com
Mon Apr 2 12:05:30 PDT 2007


Radia,

	Let me try to re-state your explanation to see if I understand 
it...

	You believe that the problem that shared VLAN learning is used
to solve is conservation of IP addresses used in a single IP subnet, 
and that it is necessary to use shared VLAN learning to keep routers 
(in the subnet) from having to re-learn MAC+IP associations across a
set of VLANs in that same IP subnet, is that correct?

Thanks!

--
Eric Gray
Principal Engineer
Ericsson  

> -----Original Message-----
> From: rbridge-bounces at postel.org 
> [mailto:rbridge-bounces at postel.org] On Behalf Of Radia Perlman
> Sent: Thursday, March 29, 2007 2:56 AM
> To: rbridge at postel.org
> Subject: [rbridge] Shared VLAN learning: What is it and why 
> should we care?
> 
> Hopefully this explanation will be clear enough for people to 
> at least 
> figure out whether we
> are all talking about the same thing. Of course, feel free to 
> correct me 
> if my understanding is wrong.
> 
> First we need to understand what problem it is trying to 
> solve. This is 
> my understanding of that:
> 
> THE PROBLEM
> ------------------
> 
> Someone has a block of IP addresses to divvy up among
> a set of different organizations. Let's say the address block has
> 100 addresses, and there are 4 organizations. One strategy might be
> to give each organization 1/4 of the IP addresses each, and then 
> possibly even
> wind up having separate IP subnets (if the addresses can be assigned
> to be in different prefixes).
> 
> The problem, though, is that you don't know in advance how 
> many addresses
> each organization will need. Perhaps even the IP address block is 
> oversubscribed,
> so that there are more potential switch ports than IP 
> addresses, and you
> just hope that not everyone connects at once (or if they do, 
> they don't
> get an IP address).
> 
> So we're going to allow basically random assignment of IP addresses
> within the IP address block to each of the four organizations.
> 
> But you still want to keep the organizations separate, as in, 
> they don't 
> see each other's traffic. They
> don't get bothered with each other's ARPs and so forth. And you don't 
> want to change the IP nodes
> (endnodes or routers)
> to know anything funny is going on.
> 
> So you use VLANs to separate the communities. A particular port
> on a switch/bridge in a L2 cloud
> is configured as to what community the attached endnode belongs to, by
> having it configured with a VLAN ID.
> 
> But you'd like all the IP nodes in the cloud, even though in different
> communities, to share the same IP router, also possibly other 
> services such
> as the DHCP server. And we don't want the IP router
> to have to know about the different communities. The IP router just
> thinks the cloud is one big happy can't-we-all-just-get-along 
> IP subnet.
> 
> But the bridges inside the L2 cloud have to somehow do two things:
> a) enforce some sort of separation between the communities, and
> b) allow them all to talk to the IP router.
> 
> So this is how they are doing this. Assign each of the 4 
> communities a 
> VLAN ID, say
> VLANs A, B, C, and D. Now what VLAN ID should the IP router 
> belong to? 
> You want it
> to be able to talk to nodes in any of the VLANs {A, B, C, or D}.
> 
> The way this is done is to declare a VLAN group known as a 
> FID (filtering
> ID for those that want to see an acronym expanded -- personally, the
> expansion of that acronym didn't help me understand what a FID is).
> So a FID is a group of VLAN IDs, say Z, A, B, C, D, with one 
> of the IDs,
> say Z, being the "primary". The IP router that serves all the 
> communities
> (in this case, A, B, C, D) will be assigned to the "primary" VLAN, in 
> this case, Z. Endnodes
> will be in one of {A, B, C, D}. IP routers serving these 
> communities will
> be assigned VLAN Z.
> 
> To clarify, if there are n communities, there will be n+1 VLANs, one
> for each of the communities, and one for the IP router(s) serving
> the communities in that IP subnet.
> 
> Switches are configured to know that {Z, A, B, C, D} is a special 
> grouping of VLANs, such
> that something transmitted from a VLAN Z port goes to all 
> ports in the 
> group, i.e., all ports in
> Z, A, B, C, and D. However, something transmitted from a VLAN A port 
> goes only to ports in
> VLAN A and VLAN Z. Something from VLAN B goes to ports in 
> VLAN B and VLAN Z.
> 
> *************
> Now a little quiz...
> 
> For those of you that are following-- and in case I actually have 
> captured the concept,
> let me ask a question.
> 
> How do two endnodes in the IP subnet talk to each other?
> The first case is two endnodes in VLAN A, say S and D.
> S, observing that D is in the same subnet, will ARP. Since D 
> is in the 
> same VLAN, it will receive
> the ARP request, and respond. Everything works fine.
> 
> But how do two endnodes in different VLANs, but in the same 
> IP address 
> block communicate? S will
> ARP, like before, because IP nodes are (blissfully) unaware of VLANs. 
> The answer people tell me
> is "in that case communication between S and D has to go 
> through the IP 
> router". OK. So how would
> that work? The
> answer I get is "the switch does proxy ARP on behalf of the 
> IP router". 
> I don't understand that. How does the
> switch know *when* to proxy ARP? The switch doesn't necessarily know 
> which VLAN node D is in.
> 
> *******************
> Well, bravely continuing on...
> 
> 
> 
> Endnode MAC address learning is done by VLAN as before. If a frame is
> received by bridge b on
> port p, with source S, from VLAN A, then bridge b remembers that {S, 
> VLAN A} is on port p.
> 
> Furthermore, a Z-tagged unicast frame is checked against the learning
> tables of Z, A, B, C, D, to determine where to forward it. So 
> if bridge 
> b receives
> a frame with
> destination=D, bridge b checks for D in any of the VLANs Z, 
> A, B, C, D, and
> forwards accordingly.
> 
> 
> 
> &&&&&&&&&&&&&&&&&
> So, that's how bridges work (I hope). So how would we support this 
> functionality in
> RBridges?
> 
> As it turns out, despite the complexity of the concept,
> it will not be that difficult to support this with RBridges, and
> even in a somewhat more optimal way, since RBridges can do multicast
> filtering within the core rather that just at the final port.
> 
> RBridges, like bridges, would have to be configured with FIDs, i.e., 
> VLAN groupings as described above.
> 
> Let's call a FID by the name of the "primary" VLAN; in our example, Z.
> 
> RB1 would be configured that FID Z = {Z, A,B,C, D}, where Z, 
> A, B, C, D are
> all 12-bit VLAN IDs.
> 
> To avoid requiring configuration of all RBridges with these FIDs, and
> still allow multicast filtering, I propose we have RBridges advertise,
> in their IS-IS core instance, FIDs that they are configured 
> with. So at 
> least one RBridge will say "Hey guys,
> I think VLANs Z, A, B, C, and D form a FID with primary=Z" 
> and the other 
> RBridges will, I guess
> believe him.
> 
> What to do if RB1 says that FID Z = {Z, A, B, C, D}, and RB2 says that
> FID Z = {Z,A,D, F} is an interesting question, but at least there is
> enough information to log an error. Lot of possibilities for 
> overlapping 
> FIDs, inconsistent FIDs, etc.
> I assume all those will be errors. If there is a FID called "Z", then 
> everyone better agree about what the
> VLAN membership of Z is, and none of the VLANs in Z better be in any 
> other FIDs.
> 
> Once there is a FID of {Z, A, B, C, D}, there will no longer be
> a VLAN-A instance of IS-IS, or a VLAN-B instance of IS-IS, or C or D. 
> Instead
> the Z-instance will announce VLANs A, B, C, and D membership 
> as well as 
> VLAN Z membership.
> 
> The Z-instance of IS-IS will specify which MAC addresses are 
> in which VLAN.
> So, RB1 might announce, in the Z-instance, {Z; a, b, q, d, f},
> {A; r, n, j}, {B; c, p, o, h}, {C; m,l}, {D;g, x, k}. The lower case 
> letters are endnode MAC
> addresses. The upper case letters are 12-bit VLAN IDs.
> 
> Multicast packets marked as VLAN Z (inner VLAN) will be sent to
> all links in Z, A, B, C, or D. So the LSPs in the VLAN Z instance of 
> IS-IS will
> be delivered to all RBridges in Z, A, B, C, and D.
> 
> That way RBridges with ports in Z, A, B, C, and/or D will 
> learn all the 
> endnode addresses
> in any of those VLANs (all the ports in FID Z).
> 
> If ingress RB1 is attached to Z, and receives a packet with
> destination D tagged as Z, RB1 checks for D in VLANs A, B, C, 
> D, and Z 
> 's endnode
> membership. As soon as RB1 finds it, let's say, as reported by
> RB2 as being in VLAN D, RB1 tunnels the packet in TRILL to RB2,
> leaving the tag as Z. When RB2 decapsulates the packet, I 
> assume it will
> rewrite the inner VLAN tag from "Z" to "D".
> 
> 
> &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
> Conclusions:
> 
> The changes to the spec:
> 
> a) announce in the core instance, FIDs as a set of VLANs, the
> first listed being the "primary".
> 
> b) multicast forwarding: if the packet is (inner) tagged with
> the VLAN ID of a primary VLAN in a FID, forward the packet on
> all in the links in the selected tree that lead to any of the VLANs
> in the FID. If the packet is tagged with the VLAN ID of a non-primary
> VLAN in a FID, forward the packet on all the ports that reach
> links in either that VLAN or in the primary VLAN for that FID.
> 
> c) when ingressing a packet with destination D, tagged with a
> VLAN tag of a primary VLAN in a FID, check the endnode information
> for all the VLANs in the FID to determine the egress RBridge.
> 
> d) when ingressing a packet with destination D, tagged with
> a VLAN tag of a secondary VLAN in a FID, check the endnode
> information for exactly two VLANs; the one the packet is
> currently tagged with, and the primary VLAN for that FID, to
> determine the egress RBridge.
> 
> e) if two RBridges, in the core instance, report inconsistent FID 
> membership, what should we do?
> 
> (Note: There was a fortune cookie program in Unix, one of the 
> fortunes 
> being "Never check for an error
> condition that you don't know how to handle". For the record--I think 
> that's a cute joke but really bad policy.).
> 
> Radia
> 
> 
> 
> _______________________________________________
> rbridge mailing list
> rbridge at postel.org
> http://mailman.postel.org/mailman/listinfo/rbridge
> 



More information about the rbridge mailing list