Q:

Why two addresses in configuring a GRE tunnel?

As I can find in this support document,  in order to configure a GRE tunnel between two routers R1 and R2, I issue the following sets of commands (mtu and mss omitted),
R1
R1(config)# interface Tunnel1    
R1(config-if)# ip address 172.16.1.1 255.255.255.0    
R1(config-if)# tunnel source 1.1.1.1    
R1(config-if)# tunnel destination 2.2.2.2

R2
R2(config)# interface Tunnel1
R2(config-if)# ip address 172.16.1.2 255.255.255.0
R2(config-if)# tunnel source 2.2.2.2
R2(config-if)# tunnel destination 1.1.1.1

What I can not understand is, why we need two  addresses at each end? If I am not wrong, R1 is getting the addresses 172.16.1.1 (interface) and 1.1.1.1 (tunnel), and R2 is getting the addresses 172.16.1.2 (interface) and 2.2.2.2 (tunnel). Each router is acting as the destination for other. But why assign two addresses at each end? As per my (mis)understanding, in R1, if we assign 172.16.1.1, why do we need 1.1.1.1? The same question applies to R2.
Moreover, as I find in the same document, further connectivity checks are done by using the
R1# ping 172.16.1.2

command. So, at least, the 1. and 2. addresses are not playing any role in the connectivity test.
I appreciate your clearing the above confusion.

A:

The 1.1.1.1 and 2.2.2.2 addresses are virtual endpoints on a point-to-point connection, they are the "road" the traffic takes to get from 172.16.1.1 to 172.16.1.2. GRE is a protocol that voyages inside IP, it's the same sort of concept you'll need if you want to understand the workings of VPNs in general. Instead of using ethernet (or other physical layers) it is using IP as the transport layer.

