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