Self-ping over PPPoFR links
This post was created as a result of a recent groupstudy post regarding self ping over PPPoFR links.
Typically, when you create a PPPoFR link between a pair of routers, you can ping the remote end, due to peer neighbor route.
However you can’t ping your OWN interface ip.
Consider the following scenario.
R1 s0/0.12 ————— s0/0.21 R2
There is a PPPoFR link configured between R1 & R2, with the following configuration:
R1
int s0/0.12
frame int 102 ppp virtual-temp 12
int virtual-temp 12
ip add 1.1.1.1 255.0.0.0
R2
int s0/0.21
frame int 201 ppp virtual-temp 21
int virtual-temp 21
ip add 2.2.2.2 255.0.0.0
With this setup, R1 can ping 2.2.2.2 (R2) & R2 can ping 1.1.1.1 (R1).
This is because peer neighbor route (enabled by default for ppp links) results in:
- R1 receiving a /32 host route for 2.0.0.0
- R2 receiving a /32 host route for 1.0.0.0
The routing table below for R1 & R2 confirm this:
R1#sh ip ro | i /32
2.0.0.0/32 is subnetted, 1 subnets
R2#sh ip ro | i /32
1.0.0.0/32 is subnetted, 1 subnets
However, neither R1, nor R2 can ping their own IP’s:
R1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
…..
Success rate is 0 percent (0/5)
R2#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
…..
Success rate is 0 percent (0/5)
Hmm…what to do?
Well there are a no of ways to make self ping work with only slight modifications to our PPPoFR setup.
The 1st two revolve around ppp multilink, one without using interface multilink & another with interface multilink.
The 2nd solution merely employs ip unnumbered.
Solution 1 – PPP multilink + NO interface multilink
With 1 line added to R1 & R2 we can resolve the self ping problem
Simply add ppp multilink under the virtual template interfaces and you are golden!
R1
int virtual-temp12
ppp multilink
R2
int virtual-temp21
ppp multilink
You will see some error messages pop up regarding frame relay traffic shaping, but just ignore those.
As can be seen below, both R1 & R2 are now able to ping themselves now!
R1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms
R2#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/8 ms
Solution 2 – PPP Multilink + interface multilink
With this solution we 1st of all create a multilink interface, & tie it to the virtual-template interface.
1st of all let’s return to the original config we had for R1 & R2:
R1
int s0/0.12
frame int 102 ppp virtual-temp 12
int virtual-temp 12
ip add 1.1.1.1 255.0.0.0
R2
int s0/0.21
frame int 201 ppp virtual-temp 21
int virtual-temp 21
ip add 2.2.2.2 255.0.0.0
Modifications we need to make are as follows:
R1
int virtual-temp12
no ip address
int multilink12
ip add 1.1.1.1 255.0.0.0
int virtual-temp12
ppp multilink group 12
R2
int virtual-temp21
no ip address
int multilink21
ip add 2.2.2.2 255.0.0.0
int virtual-temp21
ppp multilink group 21
Once you do this, you see the multilink interface come up & will see some error messages but again, ignore those!
Let’s test this:
R1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/14/48 ms
R2#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms
Cool!
Solution 3 – IP unnumbered under virtual template interface
Again let’s return to our original base configuration:
R1
int s0/0.12
frame int 102 ppp virtual-temp 12
int virtual-temp 12
ip add 1.1.1.1 255.0.0.0
R2
int s0/0.21
frame int 201 ppp virtual-temp 21
int virtual-temp 21
ip add 2.2.2.2 255.0.0.0
Modifications we need to make are simply to move the ip addressing off the virtual template onto a loopback interface & then use ip unnumbered on the virtual template interfaces:
R1
int virtual-temp 12
ip unnumbered loopback0
int lo0
ip add 1.1.1.1 255.0.0.0
R2
int virtual-temp 21
ip unnumbered loopback0
int lo0
ip add 2.2.2.2 255.0.0.0
Testing this solution, again, self ping works just dandy:
R1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
R2#ping 2.2.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
That’s the end of this post!
Comments(4)