在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网、内网到外网的作用。不同子网之间的访问完全是由路由功能实现的,而内外网之间访问使用的是SNAT和DNAT技术。

作为NFV的底层技术FD.io VPP已经包含了路由功能,因此要想以VNF的形式实现Neutron中的vRouter,就必须解决内外网之间访问的问题。其中内网访问外网是通过SANT技术,其数据流信息如下:

当内网用户发起外网访问时,其数据包携带out2in信息到达Router,Router只需根据SNAT策略为其生成in2out信息与out2in信息的对应关系并将其记录在session表中,并将数据包携带的out2in信息改成in2out信息发送出去即可。当外网服务器收到Router发送的数据包后生成应答,应答数据包携带in2out信息到达Router后,Router根据之前session表中的记录找到out2in信息与in2out信息对应关系,并将数据包携带的in2out信息改成out2in信息发送出去即可。

而外网访问内网是通过DANT技术,其数据流信息如下:

当外网用户发起内网访问时,其数据包携带in2out信息到达Router,Router只需根据DNAT策略为其生成in2out信息与out2in信息的对应关系并将其记录在session表中,并将数据包携带的in2out信息改成out2in信息发送出去即可。当内网服务器收到Router发送的数据包后生成应答,应答数据包携带out2in信息到达Router后,Router根据之前session表中的记录找到out2in信息与in2out信息对应关系,并将数据包携带的out2in信息改成in2out信息发送出去即可。

对于ICMP Request 和 Response消息来说由于其没有port信息,可以用ICMP数据包中的id信息充当port信息;而对于ICMP差错报文来说,例如ICMP不可到达报文,可以从ICMP的消息体中解析出相应的out2in或者in2out信息。

最新文章

  1. ionic 图标以及启动页图片不能正确加载
  2. Java向前引用容易出错的地方
  3. 迭代接口的IEnumerator
  4. STC89C52单片机内部EEPROM驱动
  5. IOS支付宝支付出现6002问题的解决办法
  6. atitit查询表改动表字段没反应--解锁锁定的表
  7. Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
  8. Linux 内核中的数据结构:基数树(radix tree)
  9. MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs
  10. 趁webpack5还没出,先升级成webpack4吧
  11. Exchange 2010 OWA部分用户不能访问
  12. 微信支付开发出现redirect_uri参数错误的解决方法
  13. Shiro系列(3) - What is shiro?
  14. 一、spark单机安装
  15. Z字形编排问题详解(C++)
  16. ViewPort <meta>标记
  17. vim中的加密文件
  18. C++11并发编程:多线程std::thread
  19. JSON.parse(str),JSON.stringify(a)
  20. grep egrep

热门文章

  1. IP选路
  2. gd库不支持jpeg的解决方法
  3. 推荐一个很好用的HTTP操作类
  4. sql查询语句优化需要注意的几点
  5. [置顶] 使用Android OpenGL ES 2.0绘图之五:添加运动
  6. Data Guard组件等相关介绍
  7. Java NIO之内存映射文件——MappedByteBuffer
  8. JS 脚本应该放在页面哪个位置 head body foot
  9. git(安装)配置
  10. 使用idea Live Template实现eclipse syso自动提示代码功能