SDN中基于OpenDaylight的二层转发机制是什么?

已邀请:

胖欧巴 - 在SDN的路上渐行渐远

赞同来自: 笨土豆


这个是摘的网上关于氢版本的二层转发机制的研究
wKioOVKudKjgkeeEAAEJAYDo2ns181.jpg


在SDN网络中,处于末端的主机Host并不会知道其连接的网络是SDN,某台主机要发送数据包到另一台主机,仍然需要进行IP到MAC地址的ARP解析。但SDN的处理机制与普通二层以太交换机洪泛+MAC地址学习机制存在却存在很大的差异,其过程如下:

当源主机h1(10.0.0.1)发出ARP解析h2(10.0.0.2)后,交换机SW1并不知道如何转发该包,因此将其通过OF消息发送到Controller处理。

Controller发现这个ARP消息是h1(10,0,0.1)发出,它也同时得到了h1的位置信息(OF包中会指出是哪个交换机的哪个端口发出了数据包)。此时Controller可以计算网络拓扑,得到全网各节点到10.0.0.1的转发路径,并将转发流表通过OF Flow Modify消息推送到每一台交换机上。

由于收到了ARP,Controller会要求每一台SW所对应10.0.0.0/8网段的非SW互联端口(只有这些端口是连接主机或传统网络的)发出ARP来请求10.0.0.2的MAC地址。这里Controller并不是简单的将收到ARP原封不动的发出,而是将源IP改为10.0.0.254,也就是前面我们在Controller上配置的网关IP地址,然后发出。

只有h3(10.0.0.2)才会响应ARP,它将ARP Response发送到SW2。SW2也不知道如何处理,因此将ARP封装在OF协议中发送到Controller。Controller发现这是ARP响应,而之前正是10.0.0.1发送的ARP请求,因此它会将该ARP通过OF协议发到SW1,同时指示SW1将其送出的端口(也就是h1对应的端口)。SW1执行这一操作。

Controller在收到h3的ARP后也得知了10.0.0.2的位置,它根据网络拓扑计算,可以得到全网到达10.0.0.2的转发路径,并将流表通过OF Flow Modify消息推送到每一台交换机上。

h1 收到ARP Response后完成ARP解析过程,然后它构造ICMG PING Request数据包,其中源和目MAC分别为h1和h2的MAC,源和目IP分别为h1和h2的IP。由于SW1和SW2都已经成功的装载了到h2(10.0.0.2)的流表,因此该数据包将被顺利发送到h2。

h2发现是ICMP PING Request,源是h1,但是此时它尚未有h1的MAC,于是还要进行一次ARP解析,SW2再次将ARP发送Controller,Controller已经得知h1的MAC,可直接响应,并通过OF向SW2返回ARP结果和所需要送出的端口(h2接入的端口)。

h2学到ARP后,即可构造ICMP Response包,发送到SW2,SW2根据h1目的地址匹配转发表将其转发到SW1,SW1根据h1目的地址匹配转发表将其发送到h1对应的端口。h1到h2的双向通道至此完全打通。

要回复问题请先登录注册