专栏首页SDNLABOVN实战三之打通真实网络提供NAT

OVN实战三之打通真实网络提供NAT

概述

上篇文章《OVN实战二之Overlay实现》介绍了OVN中逻辑交换机、逻辑路由器的用法,本章介绍如何让OVN中的虚拟机访问外部网络和面向外部网络提供服务(NAT)。

拓扑结构

在GNS3中新增一个Linux虚拟机,E0/0连接ovn-node3的E2/0:

为Linux的第一块网卡配置上IP地址172.16.10.100,为后面的配置实现两个目标:

☘ vm1可以ping通172.16.10.100;

☘ 在172.16.10.100上可以访问vm4中的WWW服务。

创建外部网络

在OVN中和外部网络通讯必须使用某个固定的节点,有点类似于Neutron中的网络节点(注意Neutron中的分布式路由只解决东西向流量的分布式,访问外部网络还是需要网络节点)。OVN通过逻辑路由器的chassis字段识别出绑定到某个固定的节点,我们把上一章的R1改造成固定路由器。新拓扑如下:

在ovn-node1执行:

sudo ovn-nbctl set Logical_router c971ec21-82d2-480d-a8e6-1d5566de966d options:chassis=c3c30f4f-e7e2-46fa-b621-210fd98858c5

其中的chassis是通过sudo ovn-sbctl show获取到的ovn-node3的chassis。创建网关交换机。在ovn-node1上执行:

sudo ovn-nbctl ls-add gateway-sw1

sudo ovn-nbctl lsp-add gateway-sw1 localnet-port

sudo ovn-nbctl lsp-set-addresses localnet-port unknown

sudo ovn-nbctl lsp-set-type localnet-port localnet

sudo ovn-nbctl lsp-set-options localnet-port network_name=physnet-node3

绑定网关交换机和R1,在ovn-node1上执行

sudo ovn-nbctl lrp-add r1 r1-gs1 00:00:00:10:00:00 172.16.10.20/24

sudo ovn-nbctl lsp-add gateway-sw1 gs1-r1

sudo ovn-nbctl lsp-set-type gs1-r1 router

sudo ovn-nbctl lsp-set-addresses gs1-r1 00:00:00:10:00:00

sudo ovn-nbctl lsp-set-options gs1-r1 router-port=r1-gs1

配置ovn-node3的外部网桥,在ovn-node3上执行:

sudo ovs-vsctl add-br br-ex

sudo ovs-vsctl add-port br-ex ens39

sudo ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=physnet-node3:br-ex

验证结果

通过Linux节点ping 172.16.10.20:

通过vm1 ping 172.16.10.20:

但是vm1 此时ping不通172.16.10.100(Linux),这是因为我们少了一部配置,需要为Router配置上NAT映射,把192.168.100.0/24的外网请求全部绑定到172.16.10.20上。在ovn-node1上执行:

sudo ovn-nbctl -- --id=@nat create nat type="snat" logical_ip=192.168.100.0/24 external_ip=172.16.10.20 -- add logical_router r1 nat @nat

发布服务

下面让172.16.10.100(Linux)可以访问vm4上的服务,需要增加一条DNAT映射,把所有172.16.10.10的(172.16.10.20已经用于SNAT映射了)的请求全部映射到192.168.200.40,在ovn-node1上执行:

sudo ovn-nbctl -- --id=@nat create nat type="dnat" logical_ip=192.168.200.40 external_ip=172.16.10.10 -- add logical_router r1 nat @nat

在172.16.10.100上访问172.16.10.10

总结

OVN是一个新的“控制器”,它原理简单运行时进程也非常精简,可以独立部署运行。对比起ODL、ONOS它的“小巧”很便于我们理解问题,调试起来也更加方便;对比Neutron而言它可以独立于OpenStack运行(当让你也可以通过networking-ovn插件把OVN和Neutron组合起来)。

OVN是OVS的新项目,目前网络上关于它的资料少的可怜。笔者在学习的时候基本上是官方文档+代码的方式,走过不少弯路。本系列凸出“实战”,没有涉及过多的OVN原理,把关注点放在了OVN的安装、调试、使用上,希望大家都能有所收获。

本文分享自微信公众号 - SDNLAB(SDNLAB),作者:邢森@上海电信

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • OVN实战一之GNS3操作指南及OVN入门

    一、GNS3简介 GNS3是一个专业的网络模拟器,可以用它来模拟交换机、路由器、防火墙等网络设备。它的功能非常强大,基于它能搭建一个近似于 “真实”的模拟环境。...

    SDNLAB
  • OpenStack Neutron之持续测试

    一.OpenStack持续测试概述 众所周知,OpenStack作为一个特大型软件开发项目,有着数千人的开发人员,每天要处理千计提交的代码,几千条Gerrit评...

    SDNLAB
  • NVIDIA推出业内首款25G安全智能网卡(SmartNIC)

    NVIDIA于今日宣布推出NVIDIA Mellanox ConnectX-6 Lx SmartNIC,一款高度安全且高效的25/50 Gb/s以太智能网卡(S...

    SDNLAB
  • 看用友王文京、太极刘淮松、东华吕波、超图宋关福谈以往的过失

    访谈嘉宾:用友董事长王文京、太极总裁刘淮松、东华软件总经理吕波、超图软件总裁宋关福。 上周我们发表了《软件行业的十字路口看用友、太极、东华、超图各位老总如何谈...

    人称T客
  • flannel原理简析及安装

    flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不...

    菲宇
  • OTT当道 运营商该如何应对?

    用户1756920
  • 自定义圆角和园边的实现

    本来想在网上找个圆角的例子看一看,不尽人意啊,基本都是官方的Demo的那张原理图,稍后会贴出。于是自己自定义了个View,实现图片的圆角以及圆形效果。效果图: ...

    xiangzhihong
  • 分布式事务 TCC-Transaction 源码分析 —— TCC 实现

    本文主要基于 TCC-Transaction 1.2.3.3 正式版 1. 概述 2. TCC 原理 3. TCC-Transaction 原理 4. 事务与参...

    芋道源码
  • sql server 事务处理

    事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。 事务有4个属性,称为ACID(原...

    欠扁的小篮子
  • Akka 指南 之「第 4 部分: 使用设备组」

    让我们仔细看看用例所需的主要功能。在用于监测家庭温度的完整物联网系统中,将设备传感器连接到系统的步骤可能如下:

    CG国斌

扫码关注云+社区

领取腾讯云代金券