In former posts, i already mentioned the flexibility of GRE tunnels.
A few days ago, i tried to assign a Tunnel interfaces to a bridge-group to get Layer-2 conectivity between 2 sites.
Unexpectedly, it works, although bridge-group commands aren’t supported on Tunnel interfaces.
Here`s a small image, to illustrate the setup
The setup in this example is using c3725-adventerprisek9-mz.124-15.T6.bin running on GNS3.
But i also tried it in real life with 2 Cisco 1841 running c1841-adventerprisek9-mz.124-15.T8.bin (both were connected to the internet using PPPoE).
Configuration
I assume, that there is a working IP connection between maria and hilde, because i will only provide templates for GRE and bridge-groups.
The simplest way is to use static host routes on both ends for establishing the tunnels.
First of all, we have to configure GRE tunnels on both routers
maria:
interface Tunnel1
description GRE tunnel to hilde
no ip address
tunnel source FastEthernet0/1
tunnel destination 172.16.17.6
tunnel mode gre ip
hilde:
interface Tunnel1
description GRE tunnel to maria
no ip address
tunnel source FastEthernet0/0
tunnel destination 172.16.17.1
tunnel mode gre ip
maria and jenny have no IP address configured on their LAN interfaces Fa0/1 respectively Fa0/0
Accordingly, we have to configure bridge-groups on both sides in global configuration mode…
bridge irb bridge 1 protocol ieee
…and assign them to the desired interfaces with the commands:
bridge-group 1 ! next command only needed on Tu1 ! with STP enabled, it doesn't work bridge-group 1 spanning-disabled
Obviously bridge-group commands aren’t available on Tunnel interfaces.
Even so IOS will accept the instructions, but displays a message that you are doing some nasty things
hilde(config)#int tu 1 hilde(config-if)#bridge-group 1 % This command is an unreleased and unsupported feature
Therefore it isn’t recommended to use this nice feature in production.
I also tried to add IPSec encryption, but this doesn’t work.
Verification
Try to ping from a host attached to marias Fa0/0 to a host connected to hildes Fa0/1 and inspect the ARP tables
Host olive (connected to hilde)
root@olive% ping 192.168.222.140
PING 192.168.222.140 (192.168.222.140): 56 data bytes
64 bytes from 192.168.222.140: icmp_seq=0 ttl=64 time=67.599 ms
64 bytes from 192.168.222.140: icmp_seq=1 ttl=64 time=71.744 ms
64 bytes from 192.168.222.140: icmp_seq=2 ttl=64 time=68.252 ms
64 bytes from 192.168.222.140: icmp_seq=3 ttl=64 time=49.087 ms
64 bytes from 192.168.222.140: icmp_seq=4 ttl=64 time=78.523 ms
64 bytes from 192.168.222.140: icmp_seq=5 ttl=64 time=53.324 ms
64 bytes from 192.168.222.140: icmp_seq=6 ttl=64 time=75.248 ms
^C
--- 192.168.222.140 ping statistics ---
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max/stddev = 49.087/66.254/78.523/10.207 ms
root@olive% arp -an
MAC Address Address Interface Flags
00:0c:29:af:44:31 192.168.222.140 em2.0 none down
Total entries: 1
Host debian (connected to maria)
debian:~# ping 192.168.222.110
PING 192.168.222.110 (192.168.222.110) 56(84) bytes of data.
64 bytes from 192.168.222.110: icmp_seq=1 ttl=64 time=78.3 ms
64 bytes from 192.168.222.110: icmp_seq=2 ttl=64 time=55.0 ms
64 bytes from 192.168.222.110: icmp_seq=3 ttl=64 time=88.8 ms
64 bytes from 192.168.222.110: icmp_seq=4 ttl=64 time=64.1 ms
64 bytes from 192.168.222.110: icmp_seq=5 ttl=64 time=60.8 ms
64 bytes from 192.168.222.110: icmp_seq=6 ttl=64 time=60.0 ms
64 bytes from 192.168.222.110: icmp_seq=7 ttl=64 time=68.1 ms
64 bytes from 192.168.222.110: icmp_seq=8 ttl=64 time=71.9 ms
--- 192.168.222.110 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7007ms
rtt min/avg/max/mdev = 55.045/68.436/88.884/10.331 ms
debian:~# arp -an
? (192.168.222.110) at 00:0C:29:28:27:E3 [ether] on eth1
debian:~#
For further information, you can consult some few “show bridge” commands.
hilde#sh bridge 1 verbose Total of 300 station blocks, 299 free Codes: P - permanent, S - self BG Hash Address Action Interface VC Age RX count TX count 1 C4/0 000c.2928.27e3 forward FastEthernet0/1 - 0 2006 0 Flood ports (BG 1) RX count TX count FastEthernet0/1 1517 0 Tunnel1 0 1514
hilde#sh bridge 1 Total of 300 station blocks, 299 free Codes: P - permanent, S - self Bridge Group 1: Address Action Interface Age RX count TX count 000c.2928.27e3 forward FastEthernet0/1 0 2025 0 hilde#
hilde#sh interfaces irb FastEthernet0/0 Link to jenny f0/0 Routed protocols on FastEthernet0/0: ip FastEthernet0/1 Link to lan 192.168.222.0/24 Bridged protocols on FastEthernet0/1: appletalk clns decnet ip Software MAC address filter on FastEthernet0/1 Hash Len Address Matches Act Type 0x00: 0 ffff.ffff.ffff 3514 RCV Physical broadcast 0x0D: 0 c200.0c6c.0001 503 RCV Interface MAC address 0x2A: 0 0900.2b01.0001 0 RCV DEC spanning tree 0xC0: 0 0100.0ccc.cccc 0 RCV CDP 0xC2: 0 0180.c200.0000 0 RCV IEEE spanning tree 0xC2: 1 0180.c200.0000 0 RCV IBM spanning tree 0xC2: 2 0100.0ccd.cdce 0 RCV VLAN Bridge STP Tunnel1 GRE tunnel to maria Bridged protocols on Tunnel1: appletalk clns decnet ip Software MAC address filter on Tunnel1 Hash Len Address Matches Act Type 0x00: 0 ffff.ffff.ffff 0 RCV Physical broadcast 0x2A: 0 0900.2b01.0001 0 RCV DEC spanning tree 0xC2: 0 0180.c200.0000 0 RCV IEEE spanning tree 0xC2: 1 0180.c200.0000 0 RCV IBM spanning tree 0xC2: 2 0100.0ccd.cdce 0 RCV VLAN Bridge STP hilde#
The output of show bridge looks a little bit odd, because you should see both MAC adresses on maria and hilde.
Counters look curios too. Both, RX and TX, should increase.
Due to the lack of show and debug commands, you only can hope, that it works…