Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Aug 2006 13:11:35 +0200
From:      Jon Otterholm <jon.otterholm@ide.resurscentrum.se>
To:        freebsd-isp@freebsd.org
Subject:   Router Tweaked
Message-ID:  <44F57267.2000202@ide.resurscentrum.se>

next in thread | raw e-mail | index | archive | help
Hi.

I have a problem, or maybe I should see it as a challenge.
We offer broadband services and we buy the connection to our customers 
from another company with an infrastructure built on Cisco technology.

Our customers are delivered to us on a unique VLAN/customer. In their 
core-net they use a technology called QinQ - a bunch of VLAN's with an 
extra VID to be able to scale the network easier. For example all 
customers from one DLSAM have a their unique VID but from that site and 
through the rest of the network they all belong to the same QinQ-VID.

The downside to using this technology (QinQ) is that we loose some of 
the virtual functions of the VLAN's. For example the MAC-tables are not 
separated any longer - we have one table for each QinQ VLAN and not one 
for each VLAN. This means that we as ISP cannot use if_bridge to bridge 
a bunch of VLAN's together because this will mess upp FDB in the Cisco 
switches - one MAC-address will belong to more than one port in a switch 
in the same FDB. This wouldn't be a problem if they was'nt using QinQ - 
because then each VLAN would have their own FDB in each switch.

My goal is to build a Router based on *BSD (preferably FreeBSD) with a 
VLAN-IF for each customer linked to a bridge so that I could use one (1) 
IP per customer and not waste 3 IP's on net-, Gateway- and 
boradcast-addresses on each customer if I would route each customer in a 
normal fashion.
                                   
                                           _____________________
                                          
___________                        |                     |
Customer1; VID 100---\                   |           
|                       |/em0.100--\          |
                      |> QinQ VID 1----P1|CiscoSwitch|P2---VID 
100,200----em0| FreeBSD   |>-bridge0|
Customer2; VID 200---/                   
|___________|                       |\em0.200--/          |
                                        
                                     |_____________________|

The solution above are non-working out of the box because of the QinQ. 
One solutions is to put a ARP-Proxy (net.link.ether.inet.proxyall ?) 
that would spoof all the IP's connected to the client IF's. Or maybe 
PF/IPFW have some magic I could use to redirect Client-To-Client traffic 
via Loopback.

Of course Cisco has a solution to this (since they invented the 
"problem" :-)) based on IP-less IF (for the customer), a local Loopback 
IF acting as gateway and ARP-Proxy for communications between customers.

I have put this out there before with no good results. Is there anyone 
out there with any good thoughts on this that may help me on the way?

Additionally I want to be able to trace my customers if back to their 
VLAN if someone give me a time and a IP-address.

Any thoughts or hints are appreciated.

/Jon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44F57267.2000202>