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

邢森:Java、Python码农,运营“写程序的康德”自媒体。现就职于上海电信信息网络部任职架构师,主要负责网络相关产品的研发工作。

概述

上篇文章《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执行:

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

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

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

验证结果

通过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上执行:

发布服务

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

在172.16.10.100上访问172.16.10.10

总结

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

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


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19842.html
分享到:
相关文章
条评论

登录后才可以评论

fireflyc 发表于17-09-08
2