美文网首页
OVN系列5 -- 公网访问

OVN系列5 -- 公网访问

作者: 苏苏林 | 来源:发表于2022-02-02 17:02 被阅读0次

拓扑

在上文拓扑的基础上,创建一个ovs bridge作为公网出口网桥,名称为br-ex,它是不纳入ovn管理的,在ovn只把它看作一个外部network,将其命名为dataNet,通过为logic sw的出口配置network option来关联。router 和 dataNet之间创建一个logic sw互联。
配置也是在上文的基础上做增量配置。


image.png
image.png

配置

配置一个logic switch连接外网和VPC路由器,命名为sw-pub,外网以及外网接口都是非OVN托管的,所以这里设置port type为localnet,addresses为unknown。

ovn-nbctl ls-add sw-pub
ovn-nbctl lsp-add sw-pub sw-pub-port-out
ovn-nbctl lsp-set-addresses sw-pub-port-out  unknown
ovn-nbctl lsp-set-type sw-pub-port-out localnet
ovn-nbctl lsp-set-options sw-pub-port-out network_name=dataNet

连接VPC路由器和sw-pub,出口网关配置为192.168.77.254,本地地址为192.168.77.1,配置默认路由指向网关。

ovn-nbctl lrp-add vpc-router rt-pub-port 02:d4:1d:8c:ff:1  192.168.77.1/24
ovn-nbctl lsp-add sw-pub sw-pub-port-router
ovn-nbctl lsp-set-type sw-pub-port-router router
ovn-nbctl lsp-set-addresses sw-pub-port-router 02:d4:1d:8c:ff:1
ovn-nbctl lsp-set-options sw-pub-port-router router-port=rt-pub-port
ovn-nbctl lr-route-add vpc-router "0.0.0.0/0"   192.168.77.254

配置网关所在节点信息,其中chassis为 ovn-sbctl show显示的Chassis信息,见上文描述。

ovn-nbctl lrp-set-gateway-chassis rt-pub-port bd8b4326-9548-49b2-aff0-00773fbd7ac9

配置数据面,ovs外部网桥,配置完成后,计算节点控制器会自动识别dataNet所对应的网桥为br-ex。

ovs-vsctl add-br br-ex
ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=dataNet:br-ex

使用netns模拟外部公网,连接到br-ex网桥

ip link add veth-topub-o type veth peer name veth-topub-ns
ovs-vsctl add-port br-ex veth-topub-o
 
ip link set up dev veth-topub-o
ip netns add pub-net
ip link set netns pub-net dev veth-topub-ns
ip netns exec pub-net ip link set up dev lo
ip netns exec pub-net ip link set up dev veth-topub-ns
ip netns exec pub-net ip addr add 77.1.1.1/32 dev lo
ip netns exec pub-net ip addr add 192.168.77.254/24 dev veth-topub-ns
ip netns exec pub-net ip route add 30.1.1.0/24 via 192.168.77.1

流表分析

### 确认为转发后,进入table15,其中需要注意的是 NXM_OF_IP_DST[]->NXM_NX_XXREG0[96..127]将下一跳存入reg0 供后续流表使用。
### 1、metadata=0x7表示VPC路由器,路由器上的三个直连网段的转发,其中两个是VPC网络,一个是公网网络
##     转发对报文的修改:src mac=网关mac,ttl--,和内核协议栈处理类似。
 cookie=0xcf105cd3, duration=13247.735s, table=15, n_packets=0, n_bytes=0, priority=49,ip,metadata=0x7,nw_dst=40.1.1.0/24 actions=dec_ttl(),move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[96..127],load:0x28010101->NXM_NX_XXREG0[64..95],mod_dl_src:02:d4:1d:8c:40:01,load:0x2->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,16)
 cookie=0x448ecdcd, duration=13247.733s, table=15, n_packets=15, n_bytes=1470, priority=49,ip,metadata=0x7,nw_dst=30.1.1.0/24 actions=dec_ttl(),move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[96..127],load:0x1e010101->NXM_NX_XXREG0[64..95],mod_dl_src:02:d4:1d:8c:30:01,load:0x1->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,16)
 cookie=0x74fa48c4, duration=3298.141s, table=15, n_packets=275, n_bytes=26950, priority=49,ip,metadata=0x7,nw_dst=192.168.77.0/24 actions=dec_ttl(),move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[96..127],load:0xc0a84d01->NXM_NX_XXREG0[64..95],mod_dl_src:02:d4:1d:8c:ff:01,load:0x3->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,16)
### 2、默认路由触发的流表,在logic router如果没匹配上面三条直连路由流表,则走默认路由,下一跳是 192.168.77.254,
##    下一跳也是存在reg0中,修改smac、ttl
 cookie=0x8a2f7740, duration=1565.280s, table=15, n_packets=2, n_bytes=196, priority=1,ip,metadata=0x7 actions=dec_ttl(),load:0xc0a84dfe->NXM_NX_XXREG0[96..127],load:0xc0a84d01->NXM_NX_XXREG0[64..95],mod_dl_src:02:d4:1d:8c:ff:01,load:0x3->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,16)
 
### 3、这个流表resubmit了两次,第一次到table66,是为了刷dmac,这样加上上面table15中修改了smac和ttl,三层转发流程完成。
##  然后next table17走output流程。table66是动态table,是控制器通过mac地址学习动态下发的。见上一篇中的mac地址学习流程。
##     
 cookie=0xd5478283, duration=13247.733s, table=16, n_packets=292, n_bytes=28616, priority=0,ip,metadata=0x7 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],mod_dl_dst:00:00:00:00:00:00,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,17)
 
 cookie=0x0, duration=1599.369s, table=66, n_packets=3, n_bytes=294, priority=100,reg0=0xc0a84dfe,reg15=0x3,metadata=0x7 actions=mod_dl_dst:2e:bb:8d:e4:2d:bd


 ### 这里贴出了上一节中table66流表格式。
 cookie=0x0, duration=679.005s, table=66, n_packets=0, n_bytes=0, priority=100,reg0=0x1e01010b,reg15=0x1,metadata=0x7 actions=mod_dl_dst:fa:10:dd:1b:30:01
 cookie=0x0, duration=650.303s, table=66, n_packets=0, n_bytes=0, priority=100,reg0=0x1e01010c,reg15=0x1,metadata=0x7 actions=mod_dl_dst:fa:10:dd:1b:30:02
 cookie=0x0, duration=157.431s, table=66, n_packets=0, n_bytes=0, priority=100,reg0=0x2801010b,reg15=0x2,metadata=0x7 actions=mod_dl_dst:fa:10:dd:1b:40:01


###sw-pub流表
cookie=0x107a5839, duration=10868.011s, table=24, n_packets=672, n_bytes=64904, idle_age=3, priority=0,metadata=0x8 actions=load:0xfffe->NXM_NX_REG15[],resubmit(,32)
cookie=0x0, duration=10868.011s, table=33, n_packets=672, n_bytes=64904, idle_age=3, hard_age=10867, priority=100,reg15=0xfffe,metadata=0x8 actions=load:0xc->NXM_NX_REG13[],load:0x1->NXM_NX_REG15[],resubmit(,34),load:0xfffe->NXM_NX_REG15[]
cookie=0x0, duration=10867.958s, table=65, n_packets=676, n_bytes=65072, idle_age=3, priority=100,reg15=0x1,metadata=0x8 actions=output:"patch-br-int-to"

相关文章

网友评论

      本文标题:OVN系列5 -- 公网访问

      本文链接:https://www.haomeiwen.com/subject/mtakkrtx.html