opendaylight中ping的数据流分析

http://vinllen.com/opendaylight-pinghong-fa-de-shu-ju-liu/

例程详细讲解了odl中ping的数据流过程


1.host1 ping host4,首先发送一个arp报文,交换机收到arp报文,由于本身流表没有,上传到controller。

2.由于是of 1.0的协议,走的of 1.0 模块,of1.0收到后上传到SAL层。

3.SAL层之上多个模块监听IListenDataPacket收包,每个监听IListenDataPacket的都会收到一份拷贝。Arp报文将会被ARPHandler模块接收。

4.ARPHandler通知HostTracker学习源主机地址。

5.HostTracker学习源主机地址。

6.HostTracker同时通知TopologyManager新主机被发现。理论上,还会触发流表下发,告诉每个ovs host1的地址,但是源码上没有找到。

7.ARPHandler下发广播报文,每个交换机都会发送一个广播。学习到地址之后告知ARPHandler。(目的主机host4将会发回ARPResponse,同样也会被HostTracker学习,此步骤在图中被省略)。到此为止,arp包处理完毕。

8.SAL层收到上传的ping包,告知SimpleFowarding进行转发。(此步骤省略了从host到switch到OF1.0到sal上传的过程,由于基本一致,下发操作在图中也被我省略)

9.SimpleFowarding询问HostTracker目的主机地址。

10.SimpleFowarding询问Routing模块路由地址,注意此处粒度到交换机的端口为止,该模块实现为Dijsktra寻路。

11.Routing模块需要TopologyManager告知全网拓扑才能完成计算。

12.TopologyManager告知全网拓扑。

13.Routing模块计算后告知ForwardingRulesManager下发流表。

14.Routing模块告知SimpleFowarding转发路径。(注意此处流表和转发报文都会被下发)

15.SimpleFowarding告知SAL转发报文。

如果启用北向接口,比如TopologyManager提供北向接口,App1可以通过REST api被动或者主动获取拓扑变化情况;也或者App2自己设置转发规则,则取代SimpleForwarding进行路由转发。

关于粒度问题: NodeConnector标识交换机上对应主机的端口,所以计算粒度只计算到交换机为止。

计算粒度只到交换机层面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值