zoukankan      html  css  js  c++  java
  • GRE 协议

    GRE 出现的背景:

    随着网络(公司)规模的增大,越来越多的公司需要在跨区域之间建设自己的分公司。但随之也就出现了这样的问题,考虑这样一个场景。公司 A 在北京和上海间开设了两家公司,由于业务的需要,需要实现两家公司间的数据通信。公司考虑到未来的发展,在北京和上海启动了 IPV6 作为网络层的传输协议。但由于使用的 ISP (供应商,比如联通)在公网提供的是 IPV4 的网络层协议,这时想要通信该怎么办呢?

    GRE 就是为了解决这个问题而出现的,专业些说解决的就是异种网络的传输问题。

    GRE 的原理

    GRE 采用了 Tunnel 技术,进行异种网络的传输。

    乘客协议(Passenger):想要实现通信的协议,如例子中的 IPV6 协议

    封装协议:将乘客协议封装起来的协议,按照一定的规则,进行封装和解封装。

    传输协议:ISP 认识的协议,如 IPV4 协议。

    将想要通信的协议封装成 GRE 协议,然后传输 GRE 协议,在对方收到 GRE 协议后,解封装,拿出想要通信的协议,然后解析。

    • checksum:校验和,用于检测整个 GRE 数据包的准确性,包括图中黄色的部分。
    • Protocol Type:使用的协议,比如 Ox0800 表示 IP 协议,公网传输的协议。
    • Key:用于隧道的认证

    GRE 的配置

    这里假设 R2 为 ISP 提供的公网访问接口,R1 和 R3 使用的是公司内网地址。正常来说,内网地址是无法通过公网进行传递的。公网地址接受后会将其丢掉。

    如果想实现通信,就可以使用 GRE 协议,目的仅仅是想让 ISP 将 R1 的数据包发送到 R3,就像在 R1 和 R3 中间建立起了一条直连的通道。

    # STEP1: R1 config interface
    
    # config default route for R2 because we need R1 to R3 to be reachable
    Router(config)# ip route 0.0.0.0 0.0.0.0 12.1.1.2
    
    # open tunnel interface
    Router(config)#in tunnel 0
    Router(config-if)#tunnel  mode gre ip
    Router(config-if)#ip 13.1.1.1 255.255.255.0
    Router(config-if)#tunnel source 12.1.1.1
    Router(config-if)#tunnel destination 23.1.1.2
    Router#show running-config interface tunnel 0
    
    # transfer network traffic to Tunnel0 Interface
    Router(config)#ip route 192.168.2.0 255.255.255.0 Tunnel 0
    
    # STEP2: R2 config interface
    
    # STEP3: R3 config interface
    
    # config default route for R2 because we need R3 to R1 to be reachable
    Router(config)# ip route 0.0.0.0 0.0.0.0 23.1.1.1
    
    # open tunnel interface
    Router(config)#in tunnel 0
    Router(config-if)#tunnel  mode gre ip
    Router(config-if)#ip 13.1.1.2 255.255.255.0
    Router(config-if)#tunnel source 23.1.1.2
    Router(config-if)#tunnel destination  12.1.1.1
    Router#show running-config interface tunnel 0
    
    # transfer network traffic to Tunnel0 Interface
    Router(config)#ip route 192.168.1.0 255.255.255.0 Tunnel 0
    
    

    这里从 Router1 的接口抓包:

    Tunnel 接口配置 IP 的作用:

    简化流量引入的配置过程。上面的配置通过静态路由将去往 192.168.2.0 的流量引入到 Tunnel 口中。

    但加入存在多个网段,这样配置较为繁琐。

    所以可以将 R1 和 R3 的接口运行动态路由协议,进而不用在去手动管理。

  • 相关阅读:
    在纪念中国人民抗日战争暨世界反法西斯战争胜利70周年大会上的讲话
    ConcurrentHashMap 的实现原理
    聊聊并发(四)——深入分析ConcurrentHashMap
    Mybatis 动态 SQL
    Mybatis Mapper XML 文件
    MySQL的语句执行顺序
    Java 集合细节(二):asList 的缺陷
    java中 列表,集合,数组之间的转换
    将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
    把Java数组转换为List时的注意事项
  • 原文地址:https://www.cnblogs.com/michael9/p/13403435.html
Copyright © 2011-2022 走看看