nginx适配Overlay以及测试工具

天翼云开发者社区
• 阅读 8

本文分享自天翼云开发者社区《nginx适配Overlay以及测试工具》,作者:pan

Overlay与Underlay介绍 Overlay网络和Underlay网络是一组相对概念,Overlay网络是建立在Underlay网络上的逻辑网络。而Overlay网络是通过网络虚拟化技术,在同一张Underlay网络上构建出的一张或者多张虚拟的逻辑网络,如下图所示。 详细资料可查看https://zhuanlan.zhihu.com/p/436605135 nginx适配Overlay以及测试工具

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适配Overlay以及测试工具

nginx就需要在原生代码基础上,增加vni字段的读取。同时连接upstream时,因为需要封装vni,通过SO_BINDTODEVICE绑定到具体网卡,完成VXLAN封装。

如何测试 因为相比Proxy Protocol多一个字段,通过curl无法自测,通过一个python工具来测试,源码为https://github.com/codejudas/py-proxy-protocol/。但是需要修改,增加一个vni字段,在代码中涉及vni的地方均添加字段即可,如下图。

nginx适配Overlay以及测试工具

然后修改测试下面的socket.py,测试结果如图:

nginx适配Overlay以及测试工具

点赞
收藏
评论区
推荐文章
Irene181 Irene181
3年前
盘点一款强大的网络工具集------netwox
大家好,我是Python进阶者,今天给大家分享一个网络工具netwox。前言netwox是由lauconstantin开发的一款网络工具集,适用群体为网络管理员和网络黑客,它可以创造任意的TCP、UDP和IP数据报文,以实现网络欺骗,并且可以在Linux和Windows系统中运行。可以说,对平时我们用来测试网络的性能和网站压力测试很
zdd小小菜鸟 zdd小小菜鸟
1年前
windows--docker-创建自定义网络
Docker自定义网络设置1、为什么要使用NetWorktex由于在Dockerfile的文件配置需要设置网络参数。​Docker提供三种userdefined网络驱动:bridge,overlay和ma
Wesley13 Wesley13
3年前
CIDR的IP地址的表示与划分方法
早期的ip地址划分:最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址是一个32位的二进制字符,为了方便人类的记忆,所以,通常人们会将二进制的IP地址表示成十
Stella981 Stella981
3年前
37. docker swarm docker service 的更新
在service运行的情况下进行更新  1.创建名为demo的overlay网络    dockernetworkcreatedoverlaydemo  2.创建pythonflaskdemo:1.0服务    映射本地的8080端口到容器的5000端口    dockerservice
Stella981 Stella981
3年前
Docker Overlay 介绍
OverlayNetworkOverlayNetwork:属于Docker网络驱动,基于VXLAN封装实现Docker原生Overlay网络。OverlayNetwork:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。Overla
Stella981 Stella981
3年前
Docker容器跨主机通信
一、Docker主机间容器通信的解决方案  Docker网络驱动1.Overlay:基于VXLAN封装实现Docker原生Overlay网络2.Macvlan:Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识一个VLAN。容器接口直接连接Docker主机3.网卡接口:
流浪剑客 流浪剑客
1年前
http网络调试代理工具:Proxyman for Mac 中文版
是一款功能强大的网络代理工具软件,适用于Mac和iOS平台。它可以帮助开发人员、测试人员和网络管理员监控和调试网络流量。以下是Proxyman软件的一些主要功能和特点:流量捕获和监控:Proxyman可以捕获并显示设备上的所有网络流量,包括HTTP、HTT
什么是网络爬虫?
什么是网络爬虫网络爬虫是一种在Internet上运行自动化任务的软件应用程序。与人类互联网活动相比,网络爬虫运行的任务通常很简单,并且执行速度要快得多。有些机器人是合法的——例如,Googlebot是Google用来抓取互联网并将其编入索引以进行搜索的应用程序。其他机器人是恶意的——例如,用于自动扫描网站以查找软件漏洞并执行简单攻击模式的机器人。
流浪剑客 流浪剑客
1年前
Macos http调试代理工具:Proxyman for mac
是一款功能强大的网络代理工具软件,适用于Mac和iOS平台。它可以帮助开发人员、测试人员和网络管理员监控和调试网络流量。以下是Proxyman软件的一些主要功能和特点:流量捕获和监控:Proxyman可以捕获并显示设备上的所有网络流量,包括HTTP、HTT
绣鸾 绣鸾
1年前
Proxyman for mac(HTTP调试代理工具)
是一款功能强大的网络代理工具软件,适用于Mac和iOS平台。它可以帮助开发人员、测试人员和网络管理员监控和调试网络流量。以下是Proxyman软件的一些主要功能和特点:流量捕获和监控:Proxyman可以捕获并显示设备上的所有网络流量,包括HTTP、HTT
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
745
粉丝
16
获赞
40