博客
关于我
Router的外部网关
阅读量:195 次
发布时间:2019-02-28

本文共 1622 字,大约阅读时间需要 5 分钟。

Router使用字段external_geteway_info表达外部网关信息,那么这个外部网关指的是什么呢?如下图:
图中,位于Neutron管理的内部网络中有一个虚拟机(VM)的IP地址是10.10.10.10,它要访问位于外部网络(公网)的网站 ,(IP地址是104.20.110.33),需要经过公网中的路由器Router_2才能到达。Router_2通过Port2直接与Neutron网络节点中Router_1的Port1相连(中间通过Bridge等相连)。这个路由器Router_2才是真正意义的外部网关。Router_2的接口Port2的IP地址182.24.4.1就是Neutron网络的外部网关IP。
Router_2根本不在neutron的管理范围,而且Neutron也不需要真正管理它。从路由转发的角度讲,它只需在Router_1中建立一个路由表项即可。
Destinateion next_hop out interface
104.20.110.0/24 182.24.4.1 Port1(182.24.4.6)
不过从对Router1_1管理的角度来将,不仅仅是增加一个路由表项目那么简单,于是Neutron提出了external_geteway_info这个模型,它由network_id、enable_snat、external_fixed_ips等几个字段组成,它的取值如下:
“external_geteway_info”:{        “enable_snat”:true,        “external_fixed_ips”:[        {                        “ip_address”:”182.24.4.6”                        “subnet_id”:”4323-4325gf-323-543-324”        }],“network_id”:”fhdjs-34hj3-4h3j23-432j”}
这其中的“ip_address”:”182.24.4.6”,表示的就是Router_1的Port1的IP地址,“subnet_id”: ”4323-4325gf-323-543-324”中的gateway_ip就是Router_2的Port2的IP地址(假设gateway_ip=182.24.4.1)。
Neutron为模型external_gateway_info取的名字非常有意思,也非常准确,它并不是直接取名外部网关(external_gateway),而是取名外部网关信息(external_gateway_info),一字之差,蕴含了Neutron的管理理念:
1 Neutron只能管理自己的网络,只能管理上图的Router_1,不能管理Router_2;
2 Neutron也不需要管理Route_2,它只需知道外部网关IP即。而它知道外部网关IP的方法是通过相关Subnet间接获取(获取Subnet的gateway_ip字段)。
也正是从这个意义上讲,如果external_gateway_info中的enable_snat字段假设取值为“True”的话,SNAT真正生效的地点在Router_1的Port1,而不是Router_2的Port2。SNAT的示意图如下:
图中VM访问 ,它初始发出的报文头中,源IP是它自己的IP:10.10.10.10,待报文从Router_1的Port1出去时,源IP就变成了Port1的IP地址:182.24.4.6。这就完成了SNAT转换。
最后强调一下,external_gateway_info中的字段network_id所代表的Network,它的字段“router:external”取值必须为true,这表明这个Network是外部网关所在的Network。
你可能感兴趣的文章
Netty 的 Handler 链调用机制
查看>>
Netty 编解码器详解
查看>>
Netty 解决TCP粘包/半包使用
查看>>
Netty 调用,效率这么低还用啥?
查看>>
Netty+Protostuff实现单机压测秒级接收35万个对象实践经验分享
查看>>
Netty+SpringBoot+FastDFS+Html5实现聊天App详解(一)
查看>>
netty--helloword程序
查看>>
Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
查看>>
netty——bytebuf的创建、内存分配与池化、组成、扩容规则、写入读取、内存回收、零拷贝
查看>>
netty——Channl的常用方法、ChannelFuture、CloseFuture
查看>>
netty——Future和Promise的使用 线程间的通信
查看>>
netty——Handler和pipeline
查看>>
Vue输出HTML
查看>>
netty——黏包半包的解决方案、滑动窗口的概念
查看>>
Netty中Http客户端、服务端的编解码器
查看>>
Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
查看>>
Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
查看>>
Netty中的组件是怎么交互的?
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
netty之 定长数据流处理数据粘包问题
查看>>