java 模拟路由表_Router的路由表

Router中使用routers字段表示路由表,这是一个数组,每个元组的类型是[desnination,nexthop],其中destination表示目的网段(cidr),nexthop表示下一跳的IP,举例如下:

“routes”:[ { “destination”:”10.50.10.0/24” “nexthop”:”10.50.10.1” } { “destination”:”10.60.10.0/24” “nexthop”:”10.60.10.1” } ]

首先要明确,这里的nexthop指的是“外部”路由的接口IP,如下图所示:

070c50840e3c675504871277fdb9201e.png

nexthop指的就是图中Port2的IP:10.50.10.1

我们再看看外部网关信息(external_gateway_info)图。

该图中,在Router上对应端口(Port1),Neutron会自动创建,但是这里,如第一张图对应的端口(Port1),Neutron却不会主动创建,需要通过调用接口add_router_interface显示创建。这是为什么呢?这要从两者的模型(或者说参数)说起,如下表所示。

20148554df64815a98203647a753713f.png

external_gateway_info为网关配置了subnet_id和network_id,routes没有。而且external_gateway_info中所对应的Router上的Port(第2张图的Port1)也属于这sunbet_id和network_id。Neutron的Port不能孤立存在,它必须要属于Subnet和Network。所以,从这一点来说,external_gateway_info对应的Port(第2张图的Port1),Neutron可以自动创建,而routers所对应的Port(第1张图的Port1),Neutron则不会自动创建,必须要调用接口add_router_interface进行显示创建。

上表中,还提到external_gateway_info有SNAT功能,而routes里没有。这是因为,两者虽然都是要连接“外部网络”,但是两者的“外部”所指的含义是不同的,虽然“外部网络”指的都是Neutron管理范围之外的网络。external_gateway_info的“外部网络”可以包括公网 ,当他它连接公网时,必须要启动SNAT。Routes模型中的外部网络,一般指的是私网,所以它没有启动SNAT这个功能。

Routes中的路由表项,我们称之为静态路由(不是默认路由,因为有目的网段)。从表中,我们看到,external_gateway_info并没有包含目的网段,所以它所对应的路由表(虽然没有显示地存在routes字段中),我们称之为默认静态路由。也就是说,除了直连路由(也没有体现在routes中)和静态路由(体现在routes中),到达其他目的地的都走这条默认静态路由。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值