searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用ovs模拟多下一跳专线

2023-09-28 01:18:45
46
0

在云网络中,VPC内资源和IDC可以通过专线打通,并采取多下一跳专线实现负载均衡的从来来保证业务的高可用性,业务模型如下:

在VPC网关上,到专线交换机配置的是多下一跳的等价路由,使用路由ECMP实现负载均衡,在IDC侧原理类似,这样,underlay的网络实际上是在VPC网关和IDC之间是ECMP的多下一跳路由,每一跳对应一条tunnel。专线交换机负责和VPC网关建立多条tunnel,vm访问IDC时,通过任意tunnel接收流量,发送的IDC。IDC访问vm时,选择一条tunnel来封装vxlan报文,送往VPC网关。

在开发测试过程中,可以用ovs和net namespace模拟上述场景。

配置步骤:

netns相关配置

        ip link add dc-port type veth peer name tap-port 
        ip link set dev dc-port up
        ip netns add dc-port
        ip link set tap-port  netns dc-port
        ip netns exec dc-port ip link set dev lo up
        ip netns exec dc-port ip link set dev tap-port  up
        ip netns exec dc-port ip link set dev tap-port  address 10:5e:00:01:02:03

        ip netns exec dc-port ip addr add 192.1.0/30 dev tap-port 
        ip netns exec dc-port ip addr add 192.10.1.30 dev lo
        ip netns exec dc-port ip route add default via 10.24.107.20 dev tap-port  src  192.10.1.30
        ip netns exec dc-port ip neigh add 10.24.107.20 dev tap-port  lladdr 20:5e:00:01:02:03

ovs流表配置

相关的bf-int以及vxlan口配置是常规配置,这里不在单独列出,主要列出实现外部流量进入ovs后如何将多个tunnel的流量交由一个nenns处理,以及从nentns收到的流量如何ecmp到不通的tunnel上涉及到的配置

ovs从外部接口接收流量,将不通tunnel的流量都解封装,送往dc-port,有dc-port通过veth-peer送到netns内部的tap-port口,

ovs-ofctl add-flow br-int -O openflow15 "table=0,priority=2000,in_port=vxlan1,tun_id=204905,tun_src=10.24.127.20, actions=output:dc-port"

ovs-ofctl add-flow br-int -O openflow15 "table=0,priority=2000,in_port=vxlan1,tun_id=205905,tun_src=10.24.127.20, actions=output:dc-port"

ovs发送出去的流量,需要配置group实现流量的ecmp,这是配置一条流表规则,将从dc-port收到的流量送到group中,而在group中配置hash模式,并增加连个bucket,分别封装不同的underlay vxlan信息,实现出向在多个tunnel上的ecmp

ovs-ofctl add-flow br-int -O openflow15  "table=0,priority=100,in_port=dc-port actions=group:1"

        ovs-ofctl  add-group br-int  -O openflow15 "group_id=1,type=select,selection_method=hash,fields(ip_src,ip_dst),bucket=weight:100,actions=set_field:204905->tun_id,set_field:10.24.107.20->tun_dst,output:vxlan1,bucket=weight:100,actions=set_field:205905->tun_id,set_field:10.24.107.20->tun_dst,output:vxlan1

0条评论
0 / 1000
王****永
2文章数
0粉丝数
王****永
2 文章 | 0 粉丝
王****永
2文章数
0粉丝数
王****永
2 文章 | 0 粉丝
原创

使用ovs模拟多下一跳专线

2023-09-28 01:18:45
46
0

在云网络中,VPC内资源和IDC可以通过专线打通,并采取多下一跳专线实现负载均衡的从来来保证业务的高可用性,业务模型如下:

在VPC网关上,到专线交换机配置的是多下一跳的等价路由,使用路由ECMP实现负载均衡,在IDC侧原理类似,这样,underlay的网络实际上是在VPC网关和IDC之间是ECMP的多下一跳路由,每一跳对应一条tunnel。专线交换机负责和VPC网关建立多条tunnel,vm访问IDC时,通过任意tunnel接收流量,发送的IDC。IDC访问vm时,选择一条tunnel来封装vxlan报文,送往VPC网关。

在开发测试过程中,可以用ovs和net namespace模拟上述场景。

配置步骤:

netns相关配置

        ip link add dc-port type veth peer name tap-port 
        ip link set dev dc-port up
        ip netns add dc-port
        ip link set tap-port  netns dc-port
        ip netns exec dc-port ip link set dev lo up
        ip netns exec dc-port ip link set dev tap-port  up
        ip netns exec dc-port ip link set dev tap-port  address 10:5e:00:01:02:03

        ip netns exec dc-port ip addr add 192.1.0/30 dev tap-port 
        ip netns exec dc-port ip addr add 192.10.1.30 dev lo
        ip netns exec dc-port ip route add default via 10.24.107.20 dev tap-port  src  192.10.1.30
        ip netns exec dc-port ip neigh add 10.24.107.20 dev tap-port  lladdr 20:5e:00:01:02:03

ovs流表配置

相关的bf-int以及vxlan口配置是常规配置,这里不在单独列出,主要列出实现外部流量进入ovs后如何将多个tunnel的流量交由一个nenns处理,以及从nentns收到的流量如何ecmp到不通的tunnel上涉及到的配置

ovs从外部接口接收流量,将不通tunnel的流量都解封装,送往dc-port,有dc-port通过veth-peer送到netns内部的tap-port口,

ovs-ofctl add-flow br-int -O openflow15 "table=0,priority=2000,in_port=vxlan1,tun_id=204905,tun_src=10.24.127.20, actions=output:dc-port"

ovs-ofctl add-flow br-int -O openflow15 "table=0,priority=2000,in_port=vxlan1,tun_id=205905,tun_src=10.24.127.20, actions=output:dc-port"

ovs发送出去的流量,需要配置group实现流量的ecmp,这是配置一条流表规则,将从dc-port收到的流量送到group中,而在group中配置hash模式,并增加连个bucket,分别封装不同的underlay vxlan信息,实现出向在多个tunnel上的ecmp

ovs-ofctl add-flow br-int -O openflow15  "table=0,priority=100,in_port=dc-port actions=group:1"

        ovs-ofctl  add-group br-int  -O openflow15 "group_id=1,type=select,selection_method=hash,fields(ip_src,ip_dst),bucket=weight:100,actions=set_field:204905->tun_id,set_field:10.24.107.20->tun_dst,output:vxlan1,bucket=weight:100,actions=set_field:205905->tun_id,set_field:10.24.107.20->tun_dst,output:vxlan1

文章来自个人专栏
云内虚拟网络
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0