summaryrefslogtreecommitdiff
path: root/docs/interfaces/tunnel.rst
blob: 1f191c161f5461798d90aa543793df0fdd8372f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
.. _interfaces-tunnel:

Tunnel Interfaces
=================

Generic Routing Encapsulation (GRE)
-----------------------------------

A GRE tunnel operates at layer 3 of the OSI model and is repsented by IP protocol 47.  The 
main benefit of a GRE tunnel is that you are able to route traffic across disparate networks.  
GRE also supports multicast traffic and supports routing protocols that leverage multicast to 
form neighbor adjacencies.

Configuration
^^^^^^^^^^^^^

A basic configuration requires a tunnel source (local-ip), a tunnel destination (remote-ip), 
an encapsulation type (gre), and an address (ipv4/ipv6).  Below is a configuration example 
taken from a VyOS router and a Cisco IOS router.  The main difference between these two 
configurations is that VyOS requires you explicitly configure the encapsulation type.  
The Cisco router defaults to 'gre ip' otherwise it would have to be configured as well.

**VyOS Router:**

.. code-block:: sh

  set interfaces tunnel tun100 address '10.0.0.1/30'
  set interfaces tunnel tun100 encapsulation 'gre'
  set interfaces tunnel tun100 local-ip '198.18.0.2'
  set interfaces tunnel tun100 remote-ip '198.18.2.2'

**Cisco IOS Router:**

.. code-block:: sh

  interface Tunnel100
  ip address 10.0.0.2 255.255.255.252
  tunnel source 198.18.2.2
  tunnel destination 198.18.0.2

Troubleshooting
^^^^^^^^^^^^^^^

GRE is a well defined standard that is common in most networks.  While not inherently difficult 
to configure there are a couple of things to keep in mind to make sure the configuration performs 
as expected.  A common cause for GRE tunnels to fail to come up correctly include ACL or Firewall 
configurations that are discarding IP protocol 47 or blocking your source/desintation traffic.

**1. Confirm IP connectivity between tunnel local-ip and remote-ip:**

.. code-block:: sh

  vyos@vyos:~$ ping 198.18.2.2 interface 198.18.0.2 count 4
  PING 198.18.2.2 (198.18.2.2) from 198.18.0.2 : 56(84) bytes of data.
  64 bytes from 198.18.2.2: icmp_seq=1 ttl=254 time=0.807 ms
  64 bytes from 198.18.2.2: icmp_seq=2 ttl=254 time=1.50 ms
  64 bytes from 198.18.2.2: icmp_seq=3 ttl=254 time=0.624 ms
  64 bytes from 198.18.2.2: icmp_seq=4 ttl=254 time=1.41 ms

  --- 198.18.2.2 ping statistics ---
  4 packets transmitted, 4 received, 0% packet loss, time 3007ms
  rtt min/avg/max/mdev = 0.624/1.087/1.509/0.381 ms

**2. Confirm the link type has been set to GRE:**

.. code-block:: sh

  vyos@vyos:~$ show interfaces tunnel tun100
  tun100@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default qlen 1000
    link/gre 198.18.0.2 peer 198.18.2.2
    inet 10.0.0.1/30 brd 10.0.0.3 scope global tun100
       valid_lft forever preferred_lft forever
    inet6 fe80::5efe:c612:2/64 scope link
       valid_lft forever preferred_lft forever

    RX:  bytes    packets     errors    dropped    overrun      mcast
          2183         27          0          0          0          0
    TX:  bytes    packets     errors    dropped    carrier collisions
           836          9          0          0          0          0

**3. Confirm IP connectivity across the tunnel:**

.. code-block:: sh

  vyos@vyos:~$ ping 10.0.0.2 interface 10.0.0.1 count 4
  PING 10.0.0.2 (10.0.0.2) from 10.0.0.1 : 56(84) bytes of data.
  64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=1.05 ms
  64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=1.88 ms
  64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=1.98 ms
  64 bytes from 10.0.0.2: icmp_seq=4 ttl=255 time=1.98 ms

  --- 10.0.0.2 ping statistics ---
  4 packets transmitted, 4 received, 0% packet loss, time 3008ms
  rtt min/avg/max/mdev = 1.055/1.729/1.989/0.395 ms

Virtual Tunnel Interface (VTI)
------------------------------

Set Virtual Tunnel Interface

.. code-block:: sh

  set interfaces vti vti0 address 192.168.2.249/30
  set interfaces vti vti0 address 2001:db8:2::249/64

Results in:

.. code-block:: sh

  vyos@vyos# show interfaces vti
  vti vti0 {
      address 192.168.2.249/30
      address 2001:db8:2::249/64
      description "Description"
  }