onos在公有云应用

公有云基本概念

Region
区域,机房所在物理位置

AZ
可用区,对region的细分,region下某个具体机房

VPC
私有网络Virtual Private Cloud (VPC)是对云上的网络空间进行隔离,用户在云上的资源可以托管在vpc,一个vpc内的虚拟机是互通的,计算节点使用onos实现不同宿主机之间互通,一个vpc只能属于一个region

Subnet
子网,对vpc进行细分,每个subnet对应一个az

Tenant
租户,可以购买云上网络资源,一个租户可购买多个vpc,但vpc直接彼此隔离

Eip
公网ip,每个公网ip与虚拟机一一对应,绑定了eip的虚拟机可以访问公网

Slb
负载均衡,在vpc里创建slb后可以指定本vpc内的虚拟机实现负载均衡

vlan
对于slb,dsa,bms类型的port全部放在vlan1
对于vm类型的port,要根据宿主机ip和vni划分一个vlan,在一个宿主机上一个vpc对应一个vlan

snat
源地址转换,每个snat网关与vpc一一对应,snat内指定多个eip,所有在vpc内创建的虚拟机都可以通外网,而不需要与eip一一绑定

bwp
共享带宽,bwp内指定多个eip并限制总带宽,保证bwp内所有eip带宽之和不超过设定值,起限速作用

onos组件

1、部署在每个计算节点

2、onos订阅vm操作消息,收到创建vm消息后会在br-tunnel里下发入方向

3、arp请求时onos收到的数据包解析后对比源目ip,判断是否属于同一子网,若属于同一子网返回目的ip的mac,若不是同一子网返回源ip的网关mac

4、数据包请求时onos收到数据包后解析后对比源目宿主机ip,判断若属于同一宿主机,下发的流表对端vtep口是vrouter的vtep口,若属于不同宿主机,下发的流表对端vtep口是对端宿主机ip;判断是否属于同一子网,若属于,匹配源目mac下流表,若不属于,匹配源目mac(目的mac是源vm网关mac),执行修改srcmac为dstvm的网关mac,修改dstmac为dstvm的mac

5、onos缓存里包含本宿主机上所有vpc的信息(内部以vni+ip作为key,value是对应port的信息)

6、onos订阅负载均衡vip操作消息, 对于特殊服务负载均衡如redis,需要访问负载均衡网关,下发流表匹配dstmac=vm网关mac和dstip=dsa vip,执行修改dstmac为dsa mac,封装vni从vtep口发送给负载均衡网关

场景一:同host同subnet

在这里插入图片描述

场景2:不同host同subnet

在这里插入图片描述
① VM1请求访问VM2,arp请求VM2的mac地址,arp到br-int后广播给本subnet下所有vnet口和连接br-tunnel的tunnel口,vnet口没有匹配不会回复,br-tunnel的tunnel口收到后会继续把请求发给onos,onos解析后对比源目ip,判断是否属于同一子网,若属于同一子网返回目的ip的mac会返回目的ip对应的mac

② VM1拿到目的mac后封包,发给br-int,br-int会匹配流表转发给br-tunnel

③ br-tunnel收到数据包后匹配不到目的mac对应流表,将数据包上送给onos

④ onos解析数据包,查看源目ip是否属于同一宿主机,不属于,找到目的宿主机信息,触发ovs下流表,匹配srcmac和dstmac,执行剥掉vlan封装vxlan,加上vxlan的vetp口ip(目的宿主机ip)从vtep口转发

⑤ vtep口将数据包送到对端宿主机的vtep口

⑥ br-tunnel根据目的mac和vni匹配流表后转发给br-int

⑦ br-int根据目的mac和vni匹配流表转发给VM2

场景3:同host不同subnet

在这里插入图片描述
① VM1请求访问VM2,VM1发送arp请求,arp到br-int后广播给本subnet下所有vnet口和连接br-tunnel的tunnel口,vnet口没有匹配不会回复,br-tunnel的tunnel口收到后会继续把请求发给onos,onos解析后对比源目ip,判断是否属于同一子网,不是同一子网返回源ip的网关mac

②VM1拿到目的mac后封包,发给br-int,br-int会匹配流表转发给br-tunnel

③br-tunnel收到数据包后匹配不到目的mac对应流表,将数据包上送给onos

④ onos解析数据包,查看源目ip是否属于同一宿主机,不属于,找到目的宿主机信息触发ovs下流表,匹配srcmac和dstmac,执行剥掉vlan封装vxlan,加上vxlan的vetp口ip(vrouter上联口)从vtep口转发,判断是否属于同一子网,不属于,匹配源目mac(目的mac是源vm网关mac),执行修改srcmac为dstvm的网关mac,修改dstmac为dstvm的mac

⑤ vtep口将数据包送到vrouter的vtep口

⑥ vrouter解封vxlan发现目的mac不是自己,匹配流表转发给vm2所在宿主机(vrouter只有转发功能,监听port消息下发流表,匹配vm的mac和vni,执行封装vxlan的宿主机ip)

⑦ br-tunnel根据目的mac和vni匹配流表后转发给br-int

⑧ br-int根据目的mac和vni匹配流表转发给VM2

场景4:不同host不同subnet

在这里插入图片描述
① VM1请求访问VM2,VM1发送arp请求,arp到br-int后广播给本subnet下所有vnet口和连接br-tunnel的tunnel口,vnet口没有匹配不会回复,br-tunnel的tunnel口收到后会继续把请求发给onos,onos解析后对比源目ip,判断是否属于同一子网,不是同一子网返回源ip的网关mac

②VM1拿到目的mac后封包,发给br-int,br-int会匹配流表转发给br-tunnel

③br-tunnel收到数据包后匹配不到目的mac对应流表,将数据包上送给onos

④ onos解析数据包,查看源目ip是否属于同一宿主机,不属于,找到目的宿主机信息触发ovs下流表,匹配srcmac和dstmac,执行剥掉vlan封装vxlan,加上vxlan的vetp口ip(目的宿主机ip)从vtep口转发,判断是否属于同一子网,不属于,匹配源目mac(目的mac是源vm网关mac),执行修改srcmac为dstvm的网关mac,修改dstmac为dstvm的mac

⑤ vtep口将数据包送到对端宿主机的vtep口

⑥ br-tunnel根据目的mac和vni匹配流表后转发给br-int

⑦ br-int根据目的mac和vni匹配流表转发给VM2

总结

1、创建vm时br-int桥上会新增2条流表匹配mac分别对应vm的入流表和出流表;br-tunnel只会新增1条流表匹配进入vm的流表,因为出流表需要指定对端vetp口,因会设计vm漂移,对端vtep口无法固化,需在有流量经过实时匹配下发

vRouter组件

1、vRouter订阅vm消息,当收到创建vm消息时,下发流表匹配入流量srcmac(vm网关mac)和dstmac(vm的mac),执行封装vxlan的vni和宿主机,从vtep口转发出去(不涉及方向只是转发,只要是从计算节点收到的包全部扔给上联交换机)

2、vRouter订阅eip消息,当收到vm和eip的绑定消息时,下发2条入流表,从计算机点收到:入方向流表匹配srcmac(vm的mac)和dstmac(vm网关),执行将srcip(vm的ip)改成eip,dstmac(网关mac)改成上联交换机mac,从与上联交换机直连的口转发出去;从分流器收到:入方向流表匹配dstip=eip和vni,执行修改eip为vmip,封装vxlan的vni和vrouter的vtep口

分流器组件

1、分流器订阅eip消息,对外宣告eip路由,可以实现跨vpc访问
2、分流器订阅eip消息,当收到vm和eip的绑定消息时,下发从公网收到的入方向流表匹配dstip(vm的eip),执行封装vni和vrouter直连ip,从vtep口(vrouter的vtep口)转发出去

场景5:vm访问公网

在这里插入图片描述
① VM1请求访问公网,VM1发送arp请求,arp到br-int后广播给本subnet下所有vnet口和连接br-tunnel的tunnel口,vnet口没有匹配不会回复,br-tunnel的tunnel口收到后会继续把请求发给onos,onos解析后对比源目ip,判断是否属于同一子网,不是同一子网返回源ip的网关mac

②VM1拿到目的mac后封包,发给br-int,br-int会匹配流表转发给br-tunnel

③br-tunnel收到数据包后匹配不到目的mac对应流表,将数据包上送给onos

④onos解析数据包,对比发现源目ip不属于同一vpc(在onos缓存的vpc里找不到目的ip)下发流表,匹配源目mac,执行封装vxlan发给vrouter,vtep口是vrouter的上联口ip

⑤数据包到达vrouter,vrouter匹配srcmac(vm的mac)和dstmac(vm网关mac),执行修改srcip(vm的ip)为eip,dstmac(vm网关mac)为外层交换机的mac,解封vxlan从与外层交换机的直联口转发给交换机

⑥交换机收到数据包后根据路由进行转发到公网

⑦回包的时候分流器收到数据包,匹配dstip(eip),封装vxlan的vni转发给vrouter

⑧vrouter收到分流器的数据包后,解封vxlan,匹配dstip(eip),执行将eip改为vm的ip,srcmac(上联交换机mac)改为vm网关mac,封装vni和vm的宿主机ip,从vtep口转发出去

⑨ 数据包到vm宿主机后,匹配人br-tunnel的vmmac和vni转发到br-int,br-int收到后匹配vm mac后转发给vm

场景6:负载均衡网关

在这里插入图片描述
① VM1请求访问公网,VM1发送arp请求,arp到br-int后广播给本subnet下所有vnet口和连接br-tunnel的tunnel口,vnet口没有匹配不会回复,br-tunnel的tunnel口收到后会继续把请求发给onos,onos解析后对比源目ip,判断是否属于同一子网,不是同一子网返回源ip的网关mac

②VM1拿到目的mac后封包,发给br-int,br-int会匹配流表转发给br-tunnel

③br-tunnel收到数据包后匹配dstmac=网关mac和dstip=负载均衡vip的流表,执行修改dstmac为负载均衡mac,封装vni从vtep口转发给负载均衡(订阅负载均衡服务)

④ 负载均衡网关收到数据包后解封vxlan,流表匹配dstip=vip和vni,执行将srcip修改为负载均衡网关与rs直连物理口ip,src修改为负载均衡网关与rs直连物理口mac,dstip改成rs的ip,dstmac改为rs的mac,并打上标记,从直连物理口转发

⑤负载均衡网关收到从rs回复的数据包,匹配标记后,执行srcmac=负载均衡网关mac,srcip=vip,dstmac=vm网关mac,封装vni,返回计算节点宿主机

场景7:SLB网关

在这里插入图片描述
①公网用户访问slb eip,分流器已经对外通告slb的eip(在slb绑定eip时vrouter下发流表)

②分流器收到数据包后,封装vni后转发给vrouter

③vrouter匹配dstip=eip和vni,执行将dstip改为slb vip,封装vni和slb宿主机ip,发给slb网关

④ slb网关匹配dstip=slb vip和vni,执行将srcIP改为slb vip,dstip改为vmip发给vm(slb是overlay转发,类似同vpc下不同host同subnet转发,如果是dsa网关就是underlay转发)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值