常用的广域网协议

编辑

常见广域网协议及特点
PPP(Point to Point Protocol)、HDLC(High level Data Link Control)、frame-relay,X·25,slip。
PPP:点对点的协议,华为路由器默认封装,是面向字符的控制协议。
HDLC:高级数据链路控制协议,Cisco路由器默认的封装,是面向位的控制协议。
frame-relay:表示帧中继交换网,它是x.25分组交换网的改进,以虚电路的方式工作。
SDLC:同步数据链路控制(SDLC)协议是一种 IBM 数据链路层协议,适用于系统网络体系结构(SNA)

组播可以分成MAC层组播/IP层组播和应用层组播. 局域网里三种都可以用, 用第一种最多, 第二种其次. 广域网里只能用后两者, 第三种最普遍, 第二种需要网中的路由器支持, 这是最近几年才成熟的, 老的路由器可能不支持.(https://bbs.csdn.net/topics/390715120?page=1#new_post)

一、前言

其实主要总结vxlan的,但说明vxlan,又离不开组播、IGMP协议,所以放在一起总结了。主要是一些要点的总结,并没有太详细的分析,这样便于以后的查阅和复习,也可作为快速了解vxlan的途径。

本文主要根据RFC、tcp/ip详解卷一来总结。

先来两个网络图,为了便于查看协议。

二、vxlan

解决2、3层之上的多租户数据中心网络环境。

可以部署在2、3层之上。

vtep(VXLAN Tunnel End Point)不能对vxlan包分段。所以一般设置最大的MTU、或者使用MTU发现协议设置MTU。

对广域网的地址学习是无能为力。

OTV(覆盖网络传输虚拟化)相较于vxlan的最大特点是可以在广域网上进行地址学习。因为OTV在大二层建立了控制平面,IS-IS可以在三层建立控制平面。

整体报文封装头:

IPv6传输的整体报文格式:

1.vxlan头(8字节)

flag(8位,1个字节):R|R|R|R|I|R|R|R,I为1,其他为0。

VNI:24位(3个字节)。定义不同的vxlan通道,不同VNI之间的虚拟机不能通信。

保留位:24位+8位(4个字节)。传输端设置为0,接收端不关心。

2.外部UDP头

目的端口号:周知的端口号4789.

源端口号:建议根据内部报文(例如,以太网头)哈希一个端口号。可利用该值做负载均衡。

建议的范围是49152-65535。

UDP校验和:应该设置为0。接收端必须接受为0的包。如果不为0,(根据UDP伪首部、UDP、VXLAN、携带的MAC帧),接收端如果验证了该值,且不正确,那么必须丢弃该包,如果未验证,或者验证是正确的包,那么必须解析该包。

3.外部IP头

源地址:是VM(用内部的源MAC代表)所在的VTEP的IP地址。

目的地址是目的VM(用内部的目的MAC代表)所在的VTEP的IP地址。目的地址可以是单播或者组播。

4.外部以太网头

外部的vlan标签是可选的,如果存在,同正常的vlan,那么是用来在lan中划分vxlan流量的。

5、控制平面

两种,自动学习、中央分配。

远端的VTEP,根据来的vxlan包,学习内部源MAC和外部的源IP之间的对应关系。

多播路由协议(例如PIM-SM)可以提供3层网络的多播树。

vm的arp是通过组播向其他VTEP发送,VTEP再在所属的VNI局域网内arp。VTEP之间是通过组播交流arp的。VNI和组播号的对应是通过管理通道配置的。VTEP发送IGMP报告到组播路由器,来监听指定的组播。

6、应用场景

接收方向:除非明确将其传递给非VXLAN接口,否则具有内部VLAN ID的解封装帧应该被丢弃。

发出方向:根据非vxlan的包的vlan映射到vxlan。除非明确配置传输带有vlan ID的帧给某个vxlan,否则去除vlan id。

6.1内部vlan tag

不应该包含内部vlan tag,除非明确配置了。

原来的vlan网络,使用vxlan之后,应该把vlan映射进vxlan中。并且vlan 12位的id,完全可以映射进vxlan的24位的id中。

三、广播和组播

广播和组播(也成为多播)仅应用于UDP。因为UDP才是一对多的。

组播服务,例如:无盘工作站BOOTP系统(可能广播实现)、交互式会议系统(可能向每个目的地址传送一个TCP数据复制来实现)。应用程序可以向一个服务器发送一个请求,而不用知道任何特定服务器的IP地址

以太网只是组播和广播的一种实现。

1.以太网广播、组播的实现

广播地址:ff : ff : ff : ff : ff : ff

多播地址:0 1 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0,地址中最高字节的最低位设置为 1时表示该地址是一个多播地址。

如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个 I C M P不可达报文( T C P根据它的端口号作相似的过滤)。

2.IP 广播实现

四种:受限的广播、指向网络的广播、指向子网的广播、指向所有子网的广播。

2.1 受限的广播

路由器不转发受限的广播。仅在本地网路。本地广播。

如果主机是多个接口时,广播发到哪个接口是个问题,随不同系统的实现而不同。

2.2 指向网络的广播

A类网络广播地址为 n e t i d . 2 5 5 . 2 5 5 . 2 5 5,其中n e t i d为A类网络的网络号。

一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。

2.3 指向子网的广播

主机号为全1且有子网号的地址。

可能因为漏配置子网号,导致不是一个指向子网的广播地址。

2.4 指向所有子网的广播

子网号和主机号为全1.所以需要了解目的网络的子网掩码。

例如128.1.255.255/255.255.255.0,是一个指向所有子网的广播地址。但如果没有指明子网掩码,那么这就是个指向网络的地址。相反,如果不该配置子网掩码的指向网络的广播地址,误配置了子网掩码,那么就会是一个指向所有子网的广播地址。

当前的路由器没有将一个指向所有子网的广播地址传送给所有的子网。这样避免了因错误的配置,导致一个指向网络的广播地址误为一个指向所有子网的广播地址。

这样的需求尽量使用多播满足。

3.IP组播实现

IP多播提供的两类服务:

1)向多个目的地址传送数据。

2)客户对服务器的请求。也可能广播实现(BOOTP)。

使用D类IP地址实现。

最高4位是1110.

范围是2 2 4 . 0 . 0 . 0到2 39 . 2 5 5 . 2 5 5 . 2 5 5。

知名多播地址:

例如, 2 2 4 . 0 . 0 . 1代表“该子网内的所有系统组”, 2 2 4 . 0 . 0 . 2代表“该子网内的所有路由器组”。多播地址 2 2 4 . 0 . 1 . 1用作网络时间协议 N T P, 2 2 4 . 0 . 0 . 9用作R I P - 2, 2 2 4 . 0 . 1 . 2用作S G I公司的d o g f i g h t应用。多播地址2 2 4 . 0 . 0 . 4是一个知名的地址,它被当前用于多播选路的距离向量多播选路协议 D V M R P。

3.1 IP组播组地址和以太网地址的转换

IP多播对应的以太网地址范围:0 1 : 0 0 : 5 e : 0 0 : 0 0 : 0 0到0 1 : 0 0 : 5 e : 7 f : ff : ff

地址映射不是唯一的,32个对1个以太网地址。设备驱动程序或者IP层需要对数据报进行过滤。

局域网网卡趋向两种处理类型:一种是网卡根据对多播地址的散列值实行多播过滤,这意味仍会接收到不想接收的多播数据;另一种是网卡只接收一些固定数目的多播地址,这意味着当主机想接收超过网卡预先支持多播地址以外的多播地址时,必须将网卡设置为“多播混杂(multicast promiscuous)”模式。

通过路由器转发多播时,需要IGMP协议。

3.2 FDDI和令牌环网中的组播

FDDI使用相同的IP多播到48位FDDI地址的映射过程。令牌环网有所不同。

4. 任播(anycast,ipv6特有地址类型)

多个主机提供一个服务,该服务用一个地址表示,该地址就是anycast。

向哪个主机请求服务,取决于路由处理,路由会选择最近的服务点服务,所以也达到了负载均衡的效果。

Anycast 指IPV6协议中一个发送方同最近的一组接收方之间的通信。one-to-one-of-many.任播同单播地址格式,但从地址上是分不出任播的。所以,节点必须使用明确的配置指明它是一个任播地址。目前,任播仅被作为目的IP地址,且仅分配给路由器。

它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。

Anycast 的定义是: 当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的“最近”的目标接口上。

感觉像是路由协议定义出来的最近的路径。

四、IGMPv1

知名多播地址:2 2 4 . 0 . 0 . 1代表“该子网内的所有系统组”。

I G M P v1有固定的报文长度,

没有可选数据。

I GM P报文通过I P首部中协议字段值为 2来指明。

1. 报文字段解析

版本号为1:IGMPv1,另外有IGMPv2、IGMPv3

IGMPv1类型字段:为0表示多播路由器发出的查询报文,为1表示主机发出的报告报文。

检验和:计算和I C M P协议相同。

组地址:为D类IP地址。查询报文中为0,报告报文中为要参加的组地址。

2. IGMP查询和报告

主机:

1)第一个进程加入一个多播组时,主机发送一个IGMP报告。如果主机的多个进程加入同一个组,只发送一个IGMP报告。报告发送到组所在的接口上(网卡)。

2)主机的进程离开一个多播组时,不发送IGMP报告,即便是最后一个进程离开。在随后收到的IGMP查询中就不再发送该组的报告报文了。

3)主机通过发送IGMP报告来响应一个IGMP查询。对每个至少包含一个进程的组均要发回IGMP报告。

多播路由器:

1)多播路由器定时向每个接口发送IGMP查询报文。报文中的组地址设置为0。

2) 多播路由器根据收到的IGMP报告更新IGMP表信息。

TTL字段固定为1,所以数据分组仅限于本地子网。对发往一个多播地址的数据报从不会产生 I C M P差错。当T T L值为0时,多播路由器也不产生I C M P“超时”差错。

3. 实现

多播路由器中,保留了一个表,该表有接口和多播组的对应信息。当要路由一个多播时,先根据多播组查询该表,找到所有出接口,然后发送。也可能在每个接口上都有一个类似的表,来保存该接口上的多播组信息。

主机也保留了一张表,包含所有至少含有一个进程的多播组以及多播组中的进程数量。

首个IGMP报告发出后,会在间隔一段时间后(0~10秒随机),再次发出。

主机收到查询后,并不立即响应,而是等待一定的时间。因为参加同一多播组的主机都会发出响应,且目的地址是多播组地址,所以,当收到其他主机发出的同一组的报告时,就不必重复响应了。(但IGMPv3中去除了该功能)

出处:https://www.2cto.com/net/201709/679992.html

vxlan、组播、IGMP协议RFC总结(广域网协议作用)相关推荐

  1. 组播——IGMP协议讲解

    目录 IGMP基本概念 IGMP版本 IGMP v1 报文格式 两种协议报文 响应抑制机制 IGMPv1问题 IGMPv2 报文格式 查询器选举--不依赖组播路由协议 三种协议报文 IGMPv3 报文 ...

  2. 组播——IGMP Snooping

    目录 二层中组播数据转发存在的问题 IGMP Snooping 基本概念 二层组播转发表 动态端口老化时间 工作过程 二层中组播数据转发存在的问题 IGMP Snooping 基本概念 IGMP Sn ...

  3. 组播IGMP Snooping理论知识

    IGMP Snooping配置在二层组播设备上,通过对上游三层设备和下游用户之间的IGMP报文进行分析,建立和维护二层组播转发表,实现组播数据报文在数据链路层的按需分发.        IGMP Sn ...

  4. IP组播---IGMP、MLD、IGMP SSM Mapping、IGMP Snooping详解

    简介 Internet Group Management Protocol 互联网组管理协议,负责IPv4组播成员管理的协议 在接收者主机和组播路由器之间交互IGMP报文实现组成员的管理功能,建立.维 ...

  5. 第九章 广播和本地组播(IGMP和MLD)

    引言 IPv4可以使用单播(unicast),任播(anycast),组播(multicast),广播(broadcast) IPv6可以使用单播(unicast),任播(anycast),组播(mu ...

  6. 带你走进华为组播IGMP 简单易懂

    哈喽,大家好!我是艺博东 ,一个思科出身专注于华为的网工:好了,话不多说,我们直接进入正题. 文章目录 IGMP lGMPv1 lGMPv2 lGMPv3 IGMP Snnoping PIM IGMP ...

  7. tcp 组播_深入了解TCP/IP协议

    TCP/IP协议网络上类似的科普知识很多,博主针对一些资料做了下整理,加入了自己的一些理解和观点.主要还是针对新人教程,结构比较清晰,有一定学习价值. 下面进入主题,我们知道现在互联网协议是经过分层的 ...

  8. 组播侦听者发现协议MLD

    MLD简介 组播侦听者发现协议MLD(Multicast Listener Discovery)是负责IPv6组播成员管理的协议,用来在IPv6成员主机和与其直接相邻的组播路由器之间建立和维护组播组成 ...

  9. MLD(组播侦听发现协议)

    1.协议的概述 组播侦听发现协议MLD用于IPv6组播中的组成员管理,其基本原理和功能与IGMP相似.MLD的目的是使能每个IPv6路由器发现在其直连网络上的组播侦听者(即希望接收组播数据的节点)的存 ...

最新文章

  1. Python学习之路7-函数
  2. 点标记 高德地图_打尽渣男渣女的查岗神器?高德家人地图实测
  3. 解决在Mac上用pyenv安装python3失败的问题
  4. iOS再现安全漏洞 “1970变砖”问题仍未解决
  5. HTTP_请求消息_请求行
  6. linux netty udp服务端,Netty实现UDP服务端
  7. 虚拟机python环境搭载_windows之自动化在虚拟机部署操作系统并自带python环境
  8. python输入一个假分数_腾讯内容开放平台
  9. 【转】Galileo伽利略项目-- 数字城市规划和基础设施建模
  10. CF789D Mike and distribution
  11. winform 显示分隔控件_WinForm使用Label控件模拟分割线(竖向)
  12. 牛客练习赛26---未完
  13. js遍历list对象集合_Mybatis的最基本用法,遍历集合List和数组Array
  14. 无法打开源文件“QtWidgets/QMainWindow“的问题
  15. 计算机突然有一个盘打不开,电脑分区突然打不开的原因及解决方法
  16. 必须重启计算机才能关闭用户账户控制,Win10系统怎么彻底关闭用户帐户控制?...
  17. Software Testing - Browser Driver在Selenium中的作用是什么
  18. 存储英文字符字段类型用什么?
  19. python多任务,线程详解
  20. Excel-REPT重复处理字符

热门文章

  1. mysql 修改column操作
  2. 炉石传说 android手机版本区别,《炉石传说》手机版上架iPhone和安卓平台
  3. ​小皮助手(电脑玩手机游戏) v1.0 官方版
  4. 刚刚!安森美上海全球配送中心被迫关闭,将转移至新加坡和马尼拉
  5. 音频压缩的方法有哪些?三个方法介绍给你
  6. bugtrap microsoft 默认崩溃提示框_办公利器?微软(Microsoft)Surface go P?鼠标仅售169.00元_...
  7. 机床的轴越多越好吗,五轴机床到底应该怎么选?
  8. 《巴菲特致股东的信(第4版)》笔记——每股增长
  9. Pygame 键盘输入
  10. 社区团购前端(uniapp)加后端系统源码