Switching Notes
Switching Notes
Switching Notes
1Q Tunneling
IEEE 802.1Q tunneling can be used to achieve simple layer two VPN connectivity between sites by
encapsulating one 802.1Q trunk inside another. The topology below illustrates a common scenario
where 802.1Q (or "QinQ") tunneling can be very useful.
A service provider has infrastructure connecting two sites at layer two, and desires to provide its
customers transparent layer two connectivity. A less-than-ideal solution would be to assign each
customer a range of VLANs it may use. However, this is very limiting, both in that it removes the
customers' flexibility to choose their own VLAN numbers, and there may not be enough VLAN
numbers (we can only use a maximum of 4,094 or so) available on large networks.
802.1Q tunneling solves both of these issues by assigning each customer a single VLAN number,
chosen by the service provider. Within each customer VLAN exists a secondary 802.1Q trunk, which is
controlled by the customer. Each customer packet traversing the service provider network is tagged
twice: the inner-most 802.1Q header contains the customer-chosen VLAN ID, and the outer-most
header contains the VLAN ID assigned to the customer by the service provider.
Now for the interesting bit: the customer-facing interfaces. We assign each interface to the appropriate
upper-level (service provider) VLAN, and its operational mode to dot1q-tunnel. We'll also enable
Layer two protocol tunneling to transparently carry CDP and other layer two protocols between the
CPE devices.
S1(config)# interface f0/1
S1(config-if)# switchport access vlan 118
S1(config-if)# switchport mode dot1q-tunnel
S1(config-if)# l2protocol-tunnel
S1(config-if)# interface f0/3
S1(config-if)# switchport access vlan 209
S1(config-if)# switchport mode dot1q-tunnel
S1(config-if)# l2protocol-tunnel
We can use the command show dot1q-tunnel on the ISP switches to get a list of all interfaces
configured as 802.1Q tunnels:
S1# show dot1q-tunnel
Now that our tunnel configurations have been completed, each customer VLAN has transparent end-to-
end connectivity between sites. This packet capture shows how customer traffic is double-encapsulated
inside two 802.1Q headers along the ISP backbone. Any traffic left untagged by the customer (i.e.,
traffic in the native VLAN 1) is tagged only once, by the service provider.
2. Etherchannel Over Dot1q-tunnel
L2-Protocol Tunnels and 802.1q tunnels seems to be a topic that often confuse people and people
misunderstand the requirements to run these services.
The 802.1q tunnel feature allows a provider to tunnel customer traffic thru the provider network
without revealing the underlying L2 architecture of the provider network. In addition many customers
will likely share the same L2 VLAN’s thus there is a need to keep the customer VLAN traffic
separated.
With 802.1q tunneling the PE devices will add a second dot1q header, which is the access VLAN
configured on the switchport, to the customer traffic to allow the traffic to be tunneled thru the provider
cloud. This may be referred to as a Metro tag or double tagging traffic. Now obviously when you add
additional headers to traffic you need to account for these extra tags in the size of the frames. Meaning
make sure you remember to increase the system mtu of the devices to at least 1504, I personally
typically like to use 1508.
One pitfall to be aware of when configuring 802.1q tunnels is the native VLAN. If a customers native
VLAN is the same as the access VLAN configured for the tunnel port the Metro tag will not be added
to traffic of the native VLAN when using default 802.1q values on the Metro devices. There are two
ways to avoid this pitfall.
1. Use ISL trunking in the Metro Ethernet
2. Configure the Provider devices with the command “vlan dot1q tag native”. This causes the
native VLAN to also be tagged with the dot1q header on trunk ports.
It is also important to understand some of the limitations of 802.1q tunnels. Namely:
They do not support carrying VTP, DTP, or CDP packets to the remote device
Spanning-tree filtering is automatically enabled on the PE (Provider Edge) port.
Layer 3 features on the PE ports are not supported such as L3 QoS and L3 ACL’s
Fallback bridging is not supported for VLAN’s carrying customer traffic in the Metro Ethernet
Now to address a few of these shortcomings we have the additional L2 Protocol tunneling feature. The
L2 Protocol tunneling feature allows for traffic that would typically be terminated on the switchport for
evaluation to be carried to the remote PE (Provider Edge) port for evaluation by the remote customer
device. Such as:
Spanning-tree traffic can now be carried between each site to allow for properly building the
spanning-tree topology between both sites.
CDP packets can now be carried between devices to properly recognize the “Pseudo” connected
device.
VTP can be carried between both sites
LACP PAGP and UDLD traffic can be shared between two point-to-point interfaces.
If both Customer devices terminate on the same provider device L2 Protocol tunneling can be
used independently of 802.1q tunneling but if you must traverse more than 1 switch then the two
should be used in conjunction.
Example
So let’s work thru an example of configuring these two features with an EtherChannel between two
switches that is carried over a provider cloud. Below is a basic diagram of our topology we will work
with.
Now there are a few configuration requirements we should keep in mind as we work thru this example.
System MTU on Metro Switches must be increased to 1504 or more. (Remember this needs a
reboot.)
We are using 802.1q trunks so we need to command “vlan dot1q tag native”
Configuration
Following is the configuration for each device
Cat1
vlan 14
!
interface FastEthernet0/23
switchport trunk encapsulation dot1q
switchport mode trunk
udld port
channel-group 14 mode active
!
interface FastEthernet0/24
switchport trunk encapsulation dot1q
switchport mode trunk
udld port
channel-group 14 mode active
!
interface Vlan14
ip address 10.1.14.1 255.255.255.0
!
Cat2
vlan dot1q tag native
system mtu 1508
! ### remember reboot
!
interface FastEthernet0/19
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast trunk
!
interface FastEthernet0/20
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast trunk
!
interface FastEthernet0/23
switchport access vlan 114
switchport mode dot1q-tunnel
l2protocol-tunnel cdp
l2protocol-tunnel stp
l2protocol-tunnel vtp
l2protocol-tunnel point-to-point lacp
l2protocol-tunnel point-to-point udld
no cdp enable
!
interface FastEthernet0/24
switchport access vlan 124
switchport mode dot1q-tunnel
l2protocol-tunnel cdp
l2protocol-tunnel stp
l2protocol-tunnel vtp
l2protocol-tunnel point-to-point lacp
l2protocol-tunnel point-to-point udld
no cdp enable
!
Cat3
vlan dot1q tag native
system mtu 1508
! ### remember reboot
!
interface FastEthernet0/19
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast trunk
!
interface FastEthernet0/20
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast trunk
!
interface FastEthernet0/23
switchport access vlan 114
switchport mode dot1q-tunnel
l2protocol-tunnel cdp
l2protocol-tunnel stp
l2protocol-tunnel vtp
l2protocol-tunnel point-to-point lacp
l2protocol-tunnel point-to-point udld
no cdp enable
!
interface FastEthernet0/24
switchport access vlan 124
switchport mode dot1q-tunnel
l2protocol-tunnel cdp
l2protocol-tunnel stp
l2protocol-tunnel vtp
l2protocol-tunnel point-to-point lacp
l2protocol-tunnel point-to-point udld
no cdp enable
!
Cat4
vlan 14
!
interface FastEthernet0/23
switchport trunk encapsulation dot1q
switchport mode trunk
udld port
channel-group 14 mode active
!
interface FastEthernet0/24
switchport trunk encapsulation dot1q
switchport mode trunk
udld port
channel-group 14 mode active
!
interface Vlan14
ip address 10.1.14.4 255.255.255.0
!
Let’s talk about a few of the key configuration components here. When I gave the background
information above on L2 Protocol Tunneling, note that LACP and UDLD are only support in a point-
to-point operation. This is the reason we used two different VLAN’s, 114 and 124, for the two ports
connected to the customer.
The L2 Protocol tunneling allows us to carry the CDP, LACP, spanning-tree, UDLD, and VTP packets
between Cat1 and Cat4. The 802.1q handles the carrying of the traffic between the two ports by adding
the Metro Tag of 114 and 124 to traffic coming in from Cat1 and Cat4 respectively.
The reason that running UDLD is important is we are load balancing traffic between two ports.
Because our neighboring device is not directly connected we need to be aware of a device failure on the
remote end. UDLD provides this function by testing the neighboring device and taking down a port in
the event of a failure on the remote end or in the provider path. You could compare this to FREEK in
reference to Frame-Relay technologies.
Now let’s test it out and see how things are working.
Cat1#show udld neighbors
Port Device Name Device ID Port ID Neighbor State
---- ----------- --------- ------- --------------
Fa0/23 CAT1029ZJBJ 1 Fa0/23 Bidirectional
Fa0/24 CAT1029ZJBJ 1 Fa0/24 Bidirectional
Cat1#show udld Fa0/23
Interface Fa0/23
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15
Time out interval: 5
Entry 1
---
Expiration time: 39
Device ID: 1
Current neighbor state: Bidirectional
Device name: CAT1029ZJBJ
Port ID: Fa0/23
Neighbor echo 1 device: CAT1029ZJD6
Neighbor echo 1 port: Fa0/23
Message interval: 15
Time out interval: 5
CDP Device name: Cat4
Cat1#show udld Fa0/24
Interface Fa0/24
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15
Time out interval: 5
Entry 1
---
Expiration time: 37
Device ID: 1
Current neighbor state: Bidirectional
Device name: CAT1029ZJBJ
Port ID: Fa0/24
Neighbor echo 1 device: CAT1029ZJD6
Neighbor echo 1 port: Fa0/24
Message interval: 15
Time out interval: 5
CDP Device name: Cat4
Cat1#show spanning-tree vlan 14
VLAN0014
Spanning tree enabled protocol ieee
Root ID Priority 32782
Address 0019.0606.7180
Cost 12
Port 160 (Port-channel14)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32782 (priority 32768 sys-id-ext 14)
Address 0019.060c.5e80
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Po14 Root FWD 12 128.160 P2p
Cat1#show int trunk
Port Mode Encapsulation Status Native vlan
Po14 on 802.1q trunking 1
Port Vlans allowed on trunk
Po14 1-4094
Port Vlans allowed and active in management domain
Po14 1,14
Port Vlans in spanning tree forwarding state and not pruned
Po14 1,14
Cat1#ping 10.1.14.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.14.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms
Cat1#show cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID Local Intrfce Holdtme Capability Platform Port ID
Cat4 Fas 0/24 121 S I WS-C3560- Fas 0/24
Cat4 Fas 0/23 120 S I WS-C3560- Fas 0/23
Cat1#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
14 Po14(SU) LACP Fa0/23(P) Fa0/24(P)
Protected Ports
A protected port does not forward any traffic (unicast, multicast, or broadcast) to any other
port that is also a protected port. Data traffic cannot be forwarded between protected ports
at Layer 2; only control traffic, such as PIM packets, is forwarded because these packets are
processed by the CPU and forwarded in software. All data traffic passing between protected
ports must be forwarded through a Layer 3 device.
4. FLEX LINKS
Flex Links is a layer 2 switch feature with which we can achieve redundancy and load balancing at
Layer 2 level, as an alternative to Spanning Tree Protocol (STP). Flex links are a pair of Layer 2
interfaces, such as switch ports or port channels, where one interface is configured as a backup to the
other. When the primary link goes down the backup link takes over traffic forwarding.
They can be configured on all switches that need redundancy, but typical place for them are in service
provider or enterprise networks where customers do not want to run STP on the switch.
Flex Link Examples:
Scenario 1: A Downlink Switch with one primary Uplink and a backup Uplink switches.
Scenario 2: Back to Back connected Switches with redundant connections.
Load balancing
[2] Load balancing in Flex links work at VLAN level. Both the ports in the Flex link pair can be made
to forward traffic simultaneously. One port in the flex links pair can be configured to forward traffic
belonging to VLANs 1-50 and the other can forward traffic for VLANs 51-100. Mutually exclusive
VLANs are load sharing the traffic between the Flex link pairs. If one of the ports fails, the other active
link forwards all the traffic.
5.1 Fallback Bridging
First off, thanks to the two sites below, i finally learned what this beast was about. Thanks guys!
Human Modem
CCIE Candidate
I got around to play with fallback bridging yesterday. I want to summarize its important points here.
To understand it in the first place, it helps to give some information on why its needed.
In using routed protocols, such as IP, we have the possibility of going across VLAN boundaries by
using ip routing between vlan interfaces. Using non-routed protocols such as IPX, Appletalk and other
legacy protocols, we dont have this option. Hence, if we want to be able to “speak” across VLAN
boundaries, we need fallback bridging.
Now, for the platforms. The 3550 switch regards all non-IPv4 traffic to be a candidate for fallback
bridging.
I state it this way, because the 3550 specifically, treats IPv6 traffic as non-IP traffic.
The 3560 switch is clever enough to treat IPv6 (and related traffic, such as NDP) as IP traffic, and
therefore not bridge it between VLANs.
Everything regarding fallback bridging is configured using bridge groups. We apply these bridge
groups to SVI’s and routed ports. Non-IP Traffic between these VLAN’s and routed ports can then
occur.
Configuration wise, its very simple:
1 Cat-1(config)# bridge 1 protocol vlan-bridge
2 Cat-1(config)# int vlan 200
3 Cat-1(config-int)# bridge-group 1
4 Cat-1(config)# int vlan 300
5 Cat-1(config-int)# bridge-group 1
Thats all there is to establish the bridge group and apply it to your VLAN’s.
Now after the initial configuration, there are a few things you can do to tweak access to the bridge. By
default the switch accepts connections from all mac addresses learned from the two (or more) VLAN’s.
You can disable this behavior like this:
1 Cat-1(config)# no bridge 1 acquire
After this, your bridge wont learn any addresses automatically
anymore. You then setup static assignments, on whether you want to
forward/deny specific mac entries. This is configured like so:
1 Cat-1(config)# bridge 1 address 0000.1111.1111 forward
The show command to verify your bridge is:
1 Cat-1#sh bridge 1
2 Br Group Mac Address State Type Ports
3 -------- ----------- ----- ---- -----
4 1 0000.1111.1111 Forward STATIC -
As shown, we have verified that we have statically assigned the 0000.1111.1111 mac address to be
forwarded through the bridge.
To test out this configuration (without the static, and allowing the bridge to automatically learn the mac
addresses), what you can do is set up two different VLAN’s, put a port into each, hook up a router to
each one and configure IPX on each router:
1 R1(config)# ipx routing
2 R1(config-if)# ipx network AAAA
3 R1(config-if)# mac-address 0000.1111.1111
4
5 R2(config)# ipx routing
6 R2(config-if)# ipx network AAAA
7 R2(config-if)# mac-address 0000.2222.2222
8
9 R1#ping ipx AAAA.0000.2222.2222
10
11 Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to AAAA.0000.2222.2222,
12
timeout is 2 seconds:
13 !!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max =
14
8/15/24 ms
And this is all successfull even though they are in separate VLAN’s.
I think thats all I have for fallback-bridging for now. Different stuff for me to say the least
5.2Fall Back Bridging Tutorial
Bridging is an obscure topic in CCIE R&S study.
It can be divided in three types
Basically IRB and CRB are generally used on routers to bridging different VLAN domains. If IRB is
used, we can route IP over these bridged interfaces. The topic that is least discussed is Fall Back
Bridging that we configure on switches. It is basically for non-IP traffic, and thats why chances of it
appearing on the LAB are slim.
But since nowadays obscure topics are my thing as I am pretty much done with the core, in fact back in
April Narbik and all my fellow bootcampers urged me to take the lab immediately saying that I was
more than ready and worried about things which I should not.
But my Lab date is September 18th and by that time, I want to be prepared in every thing. One of such
things is Fall Back bridging, so that if by chance it shows up, i am ready to tackle it.
Other topics about which Iĺl try to write tutorials are in my post below this one.
I’ll be demonstrating how fall-back bridging works using this example. SW1 has VLAN 11 and VLAN
22 defined and R1 and R2 are in VLAN 11 and 22 respectively. R3 and R4 are connected to switch
ports Fa0/3 and fa0/4 and I’ll be demonstrating how fall back bridging works using this example.
Topology Diagram:
SW1 is 3550.
3560 behaves identically
SW1 has VLAN 11 and VLAN 22 defined and R1 and R2 are in vlan 11 and 22 respectively.
R3 and R4 are connected to switch ports Fa0/3 and fa0/4 and VLANS are not defined.
For simplicity the mac-address are as follows.
R1 F0/0 = 0000.0000.001
R2 F0/0 = 0000.0000.002
R3 F0/0 = 0000.0000.003
R4 F0/0 = 0000.0000.004
Our goal here is to make all four router bridge the non-ip traffic between them where as R1 and R2 are
in VLAN 11 and 12 respectively and R3 and R4 are not in any vlan.
To enable bridging on the physical port first we have to issue no-switchport command on physical
interface.
Interface fa0/3 and fa0/4 here.
Here is the configuration of these ports.
!
interface FastEthernet0/3
description To R3 F0/0
no switchport
no ip address
!
interface FastEthernet0/4
no switchport
no ip address
end
On R1:
R1(config)#ipx routing
R1(config)#int Fa0/0
R1(config-if)#ipx net
R1(config-if)#ipx netwo
R1(config-if)#ipx network ABC
R1(config-if)#ipx encapsulation sap
R1(config-if)#do sh ipx int f0/0
FastEthernet0/0 is up, line protocol is up
IPX address is ABC.0000.0000.0001, SAP
Similarly on R2, R3 and R4
Our IPX address are as follows
R1: ABC.0000.0000.0001
R2: ABC.0000.0000.0002
R3: ABC.0000.0000.0003
R4: ABC.0000.0000.0004
We will ping from R1 to all other routers and also monitor the bridge group table.
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0002
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0002, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/66/192 ms
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0003
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0003, timeout is 2 seconds:
!!!!!
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0004
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0004, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/48/72 ms
Finally the bridging table on switch
SW1#sh bridge
Total of 300 station blocks, 296 free
Codes: P - permanent, S - self
Bridge Group 1:
Bridge Group 1:
Now R1 should not be able to communicate with R4 but still be communicating with R2 and R3.
Lets test this.
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0004
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0004, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0003
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0003, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/58/168 ms
All right!
Now we can also change the behavior of dynamic learning by using “no bridge 1 acquire” command.
In that case, we have to manually add the mac-address we want to communicate with.
Lets do this and we’ll not manually add R2ś mac-address.
Weĺl see that R1 can ping R1 and R3 and R4 but not R2.
Now we add
We can specify interface if we want, to avoid unnecessary broadcast. But this is not essential for
communication.
Let’s see the bridge table now.
SW1#sh bridge
Total of 300 station blocks, 296 free
Codes: P - permanent, S - self
Bridge Group 1:
Address Action Interface Age RX count TX count
0000.0000.0001 forward Vlan11 P 0 0
0000.0000.0002 discard Vlan22 0 0 0
0000.0000.0003 forward FastEthernet1/3 P 0 0
0000.0000.0004 forward - P 0 0
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0002
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0002, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#ping
Protocol [ip]: ipx
Target IPX address: ABC.0000.0000.0003
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Verbose [n]:
Type escape sequence to abort.
Sending 5, 100-byte IPX Novell Echoes to ABC.0000.0000.0003, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/29/36 ms
Side Options:
Like spanning-tree we can modify forward time, hello time, and priority (for selecting root) by
following commands
bridge 1 forward-time
bridge 1 hello-time
bridge 1 priority
Also under the interface we can modify cost and priority to choose the path to root-bridge
SW1(config-if)#bridge-group 1 priority
SW1(config-if)#bridge-group 1 path-cost
PPPoE to PPPoA
The PPP frames are extracted from the PPPoE packets and encapsulated in ATM, thus converting
PPPoE into PPPoA (RFC 2364).
DSL Internet access architecture
Host PC DSL modem DSLAM Remote access server
IP IP
PPP PPP
PPPoE PPPoE PPPoA PPPoA
Ethernet Ethernet ATM ATM
DSL DSL backbone backbone
PPPoE stages
The PPPoE has two distinct stages:
PPPoE discovery
Since traditional PPP connections are established between two end points over a serial link or over an
ATM virtual circuit that has already been established during dial-up, all PPP frames sent on the wire are
sure to reach the other end. But Ethernet networks are multi-access where each node in the network can
access every other node. An Ethernet frame contains the hardware address of the destination node
(MAC address). This helps the frame reach the intended destination.
Hence before exchanging PPP control packets to establish the connection over Ethernet, the MAC
address of the two end points should be known to each other so that they can be encoded in these
control packets. The PPPoE Discovery stage does exactly this. In addition it also helps establish a
Session ID that can be used for further exchange of packets.
PPP session
Once the MAC address of the peer is known and a session has been established, the Session stage.
PPPoE Discovery (PPPoED)
Although traditional PPP is a peer-to-peer protocol, PPPoE is inherently a client-server relationship
since multiple hosts can connect to a service provider over a single physical connection.
The Discovery process consists of four steps between the host computer which acts as the client and the
access concentrator at the internet service provider's end. They are outlined below. The fifth and last
step is the way to close an existing session.
Src. (=source) holds the MAC address of the computer sending the PADI.
Dst. (=destination) is the Ethernet broadcast address.
The PADI packet can be received by more than one DSL-AC. Only DSL-AC equipment that can serve
the "Service-Name" tag should reply.
AC-Name -> String data holds the AC name, in this case “Ipzbr001” (the Arcor DSL-AC in Leipzig)
Src. holds the MAC address of the DSL-AC.
The MAC address of the DSL-AC also reveals the manufacturer of the DSL-AC (in this case Nortel
Networks).
Quirks
Since the point to point connection established has an MTU lower than that of standard Ethernet
(typically 1492 vs Ethernet's 1500), it can sometimes cause problems when Path MTU discovery is
defeated by poorly configured firewalls. Although higher MTUs are becoming more common in
providers' networks, usually the fix is to use TCP MSS (Maximum Segment Size) "clamping" or
"rewrite", whereby the access concentrator rewrites the MSS to ensure TCP peers send smaller
datagrams. Although TCP MSS clamping solves the MTU issue for TCP, other protocols such as ICMP
and UDP may still be affected. In practice, this does not present significant issues for residential users
since most content is served over TCP.
RFC 4638 allows PPPoE devices to negotiate an MTU of greater than 1492 if the underlying Ethernet
layer is capable of Jumbo Frames.
Some vendors (Cisco and Juniper, for example) refer to PPPoEoE (PPPoE over Ethernet), which is
PPPoE running directly over Ethernet or other IEEE 802 networks or over Ethernet bridged over ATM,
in order to distinguish it from PPPoEoA (PPPoE over ATM), which is PPPoE running over an ATM
virtual circuit using RFC 2684 and SNAP encapsulation of PPPoE. (PPPoEoA is not the same as Point-
to-Point Protocol over ATM (PPPoA), which doesn't use SNAP).