Mininet默认IP路由及未配置节点时主机互通原因咨询
Mininet & OpenDaylight 常见问题解答
1. 创建拓扑并添加主机后,Mininet中的默认IP路由是什么?
Mininet默认给每个主机配置的是直连子网的路由条目,而且所有主机默认会被放在同一个IP子网(比如10.0.0.0/24)里。举个实际例子,如果你创建了h1(IP 10.0.0.1/24)和h2(IP 10.0.0.2/24),在Mininet终端输入h1 route,就能看到类似下面的路由表:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这条路由的意思是:所有目标属于10.0.0.0/24子网的流量,直接通过主机的eth0网卡发送,不需要经过网关——因为所有主机都在同一个二层广播域里,交换机默认会做二层转发,所以同子网的主机可以直接互通。
如果是多交换机拓扑,只要主机还在同一个子网,默认的直连路由依然生效,交换机之间的链路也会做二层转发;但如果主机不在同一子网,且没有控制器配置三层转发(比如OVS的流表或者静态路由),跨子网的主机就没法互通了。
2. 未配置节点时,Mininet主机为何能互相ping通?
这得从Mininet的默认交换机行为说起:
- Mininet创建的OpenFlow交换机,默认处于"standalone"模式——简单说就是,如果它没连接到控制器,或者控制器还没下发任何流表规则,它就会退化成传统的二层以太网交换机:自动学习端口上的MAC地址,根据MAC地址表转发帧,甚至支持广播/泛洪未知MAC的帧。
- 你刚部署OpenDaylight的时候,如果还没在ODL里配置任何流表、MPLS规则或者网络策略,交换机根本没收到来自控制器的指令,所以完全靠自身的二层转发能力工作。
- 加上所有主机默认在同一个IP子网,ARP协议能自动解析对方的MAC地址,交换机拿到帧就直接转发,所以主机之间自然能ping通。
如果你想测试MPLS服务,需要先让OpenDaylight完全接管交换机的转发逻辑:
- 确保Mininet的交换机连接到ODL控制器(创建拓扑时用
--controller=remote,ip=ODL_IP); - 在ODL里配置对应的MPLS转发规则、标签映射,或者启用相关的MPLS应用(比如L3VPN或者MPLS-TP);
- 可能还需要修改主机的路由,让流量进入MPLS转发路径,而不是默认的二层直连。
内容的提问来源于stack exchange,提问作者Suraj Singh
相关产品推荐
相关产品推荐

