"); //-->
本文分享自天翼云开发者社区《nginx适配Overlay以及测试工具》,作者:pan
Overlay与Underlay介绍
Overlay网络和Underlay网络是一组相对概念,Overlay网络是建立在Underlay网络上的逻辑网络。而Overlay网络是通过网络虚拟化技术,在同一张Underlay网络上构建出的一张或者多张虚拟的逻辑网络,如下图所示。
详细资料可查看https://zhuanlan.zhihu.com/p/436605135
ELB使用的技术方案
天翼云ELB使用VXLAN隔离,需要进行VXLAN的解析与封装。VXLAN技术是一种大二层的虚拟网络技术,主要原理是引入一个UDP格式的外层隧道作为数据链路层,而原有数据报文内容作为隧道净荷加以传输。
ELB使用dpvs以及nginx做7层http和https的代理以及分发。报文流向为客户端(内网或者公网)->ELB(内部为dpvs->nginx)->RS(真正的http服务端)。因为ELB和RS处于同一VXLAN中,那么nginx转发的报文就需要封装VXLAN,又因为RS需要知道真实的客户端IP,nginx也需要获取客户端IP并转发的时候增加X-Forwarded-For。
dpvs收到报文会解析VXLAN,同时转发到nginx,因为dpvs采用FULLNAT的模式,nginx如果要获取真实ip,二者之间采用了Proxy Protocol。Proxy protocol,是一个Internet协议,通过为tcp添加一个很小的头信息,来方便的传递客户端信息(协议栈、源IP、目的IP、源端口、目的端口等)。因为nginx还需要知道VXLAN的id,对Proxy Protocol进行了改造,增加了vni字段,如下图。
nginx就需要在原生代码基础上,增加vni字段的读取。同时连接upstream时,因为需要封装vni,通过SO_BINDTODEVICE绑定到具体网卡,完成VXLAN封装。
如何测试
因为相比Proxy Protocol多一个字段,通过curl无法自测,通过一个python工具来测试,源码为https://github.com/codejudas/py-proxy-protocol/。但是需要修改,增加一个vni字段,在代码中涉及vni的地方均添加字段即可,如下图。
然后修改测试下面的socket.py,测试结果如图:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
相关推荐
嵌入式虚拟化:从概念到实现——案例研究
VMware:将开放系统虚拟化进行到底
重叠网络:什么让我们等了这么长时间?
虚拟化成就WLAN
VMware:ESX将击败Hyper-V
MCU的虚拟化解决方案平台
未来移动通讯技术更多着墨在运算而非通讯
服务器+存储 实现虚拟化最大优势
IP RAN接入虚拟化技术让网络化繁为简
通过虚拟化使运营商网络发生巨大变革
在单一硬件平台上执行多个工作负载
怎样利用Nginx服务器配置自己的网站
爱立信CEO:虚拟化推动市场下一波洗牌 不牺牲研发投资是发展底线
红帽与AMD强化战略合作,为混合云中的AI及虚拟化拓展客户选择
强烈推出虚拟化及电源管理增强刀片性能
软件定义光网络(SDON)解决方案及其关键技术
虚拟化在软件定义汽车汽车软件开发中的关键作用
英特尔Sachin Katti:虚拟化及开放式RAN已成未来趋势
英特尔发布P4CPU支持虚拟化技术
使用预集成栈简化嵌入式虚拟化