zoukankan      html  css  js  c++  java
  • 网络虚拟化基础协议之Geneve

    网络虚拟化最基础的技术莫过于分层(Overlay、Underlay),要实现分层有两种手段。一个是映射(Mapping),一个是封装(Encapsulation)。




    映射,主要思路是转发时替换报文语义,怎样替换将须要设备进行查询。
    封装,则是把须要的报文语义加入到网包中。处理的时候一层层的解封装就可以,尽量对设备透明。




    不少协议都实现了封装的部分或完整功能。包含IP-in-IP、Vlan、MPLS、VXLAN、NVGRE、STT等。这些协议各有各的特点,不少都是为了简单地隔离或者通过隧道连通不同网络。

    特别是后面几种。设计理念大同小异,仅仅是实现细节不同。




    对通用的封装协议标准的需求已经越来越强烈。于是有了Geneve: Generic Network Virtualization Encapsulation。


    Geneve的出发点是解决封装时候加入的metadata信息问题(究竟多少位。该怎么用),尝试适应各种虚拟化场景,Underlay的协议是最通用的IP协议(准确的说是UDP)。


    跟大部分的封装协议类似。实现Geneve一般须要两类设备:隧道终端(tunnel endpoints)和传输设备(transit devices)。

    前者用来处理封装头终止隧道,后者则是非必需的。一般是支持IP转发的设备。




    详细来看Geneve的封装帧,从外到里依次是
    外层以太头
    外层IP头(V4或V6)
    外层UDP头
    Geneve头(变长)
    内层以太头
    Payload
    外层以太头的FCS


    当中UDP的目标port默认是IANA分配的6081。而且支持可配置。UDP的校验和必须计算正确。也可配置为0。


    Geneve支持单播、多播和广播。

  • 相关阅读:
    java解决跨域
    时间格式化
    base64图片实现文件上传
    java对Base64图片的加密解密
    A5/web项目连接Oracle 12c数据库报:ORA-01017: 用户名/口令无效
    JavaScript中call如何使用?
    C# 如何让new 出来的form显示在最外层?
    因为数据库和客户端字符集不一样原因,导致显示乱码???????,解决办法
    日语键盘按键修正记录
    keybd_event 在F按键系列不起作用的解决办法
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6815794.html
Copyright © 2011-2022 走看看