GRE 协议rfc总结
一、简介
GRE(Generic Routing Encapsulation):通用路由封装。
GRE是一个通用的路由封装协议,它描述在任意的网络层之上封装另一个网络协议。
RFC:2784.
二、报文格式
封装格式:
1) 校验和存在位(1位:0)
如果为1,则checksum和reserved1有效。
2) reserved0位(12位:1-12)
接收到的报文如果reserved0的1-5位(对应上图)不为0,那么接收段必须丢弃该报文,除非该接收端明确支持RFC1701。6-12位为保留位,必须设置为0,接收端必须不关系这些位。
3) 版本字段(3位:13-15)
版本字段必须设置为0.当版本字段为1时,成为PPTP协议。
4) 协议类型(16位)
协议类型字段包含负载的协议。协议类型的值由RFC1700的ETHER TYPES部分指定。
5) 校验和字段(16位:0-15)
只有当校验和存在位为1,该校验和字段才有效。
该字段初始为0,表示要计算校验和。
校验和包括该16位校验和字段和负载部分。
6) reserved1字段(16位:16-31)
只有到校验和存在位为1,该字段有效。
该字段为保留位,必须设置为0.
三、IPv4作为运输协议
四、IPv4作为负载
对应的协议字段为0x800.
传输该IPv4负载时:
接收GRE隧道端,使用负载的IP地址来传输解封装的负载报文,负载报文的TTL必须减1。注意,当负载报文的IP地址为GRE隧道的另一端地址时,会出现循环,这时必须丢弃该报文。
五、PMUT的影响
当用IPv4作为传送协议时,现有实现并不实现路径MTU发现和不设置禁止分片标志。当传送大包时,在隧道中会分片,在隧道端再重组。
如果一个隧道端希望实现Path MTU发现,那么该隧道也需要实现把ICMP不可达错误信息报文(需要分片,设置DF位)回复给报文产生者。
否则,假如报文产生者设置了不分片标志,那么报文在隧道中可能会被丢弃,但没有把该ICMP错误信息传回给产生者,那么后续的报文也将使用相同的PMTU,导致后续报文都被丢弃。
GRE 协议rfc总结相关推荐
- socks5协议RFC文档
socks5协议RFC文档 « Xiaoxia[PG] socks5协议RFC文档 Network Working Group M. Leech Request for Comments: 1928 ...
- 14.3 GRE协议基础配置
原理概述 GRE(Generic Routing Encapsulation,通用路由封装协议)提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络(如IPv4网络)中传输,而异种 ...
- GRE协议浅析-IELAB
1.GRE的概念 1)全称:GRE(Generic Routing Encapsulation):通用路由封装协议. 2)功能:定义了在一种网络层协议上封装另一种协议(或同一种协议). 3)举例:对某 ...
- GRE协议与传输模式下IPSec隧道
以下根据strongswan代码中的testing/tests/route-based/net2net-gre/中的测试环境,来看一下GRE报文通过IPSec隧道的情况.拓扑结构如下: 拓扑图中使用到 ...
- 实验8:GRE协议的配置
实验8:GRE协议的配置 一.实验目的和要求 目的:掌握GRE的工作原理和RIP协议的配置. 要求:独立完成实验任务和实验报告.截图完整,并辅以必要的文字说明,实验步骤有条理.内容清楚流畅. 二.实验 ...
- eNSP模拟虚拟专用网(使用GRE协议)
目录 实验目的: 实验要求: 实验步骤 1 规划并配置PC机的IP地址 1. PC1: 2. PC2: 2 配置路由器设备接口的IP地址 1. 总部出口路由器: 2. 分公司出口路由器: 3. R3: ...
- tcpdump抓取TCP协议、GRE协议数据
tcpdump抓取tcp数据 1.tcpdump -i eth0 port 11751 and src host 192.168.1.34 -x -s0 tcpdump: verbose output ...
- 使用GRE协议建立IPSEC
今天给大家介绍另一种常见的IPSEC 建立场景,利用GRE协议,建立.阅读本文,您需要有一定的IPSEC 基础知识以及常见配置基础,对此不熟悉的同学可以查阅本博客的其他文章. 推荐阅读: IPSEC ...
- RFC总结之GRE协议
一.简介 GRE(Generic Routing Encapsulation)是一种通用路由封装协议,是隧道业务的一种. GRE相关的RFC有很多,如rfc1701.r ...
最新文章
- python3 pip3 install 报错 ModuleNotFoundError: No module named ‘_ctypes‘ 解决方法
- 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode5:最长回文子串
- 北邮OJ 884. 16校赛-Average Modulo
- java线程内存模型_深度解析Java多线程的内存模型
- PC寄存器为什么会被设定为线程私有
- 干货,不小心执行了rm -f,除了跑路,如何恢复?
- Lawn of the Dead
- Spring Autowiring @Qualifier example
- 网页设计制作CSS实现隔行换色两种方法
- c语言作业答案 填空题,C语言练习题-填空题(带答案)
- 玩转你的AlphaGo(MAC OS)
- gentoo中文文档
- moodle 页面联动效果
- 计算机发展的第四阶段为中小规模集成电路,第三代中小规模集成电路计算机.ppt...
- excel2007不显示文件名
- leetcode——control reaches end of non-void function
- ASCII码对应表chr(9)、chr(10)、chr(13)、chr(34)、chr(39)、chr(46)
- html中鼠标移动在标签上出现小手形状
- C语言 计算学生各科成绩平均分的总和
- ESB 企业服务总线基本内容概述