dp(Device Protocol)地址,也称设备地址,是网络设备(主要是交换机)上为了实现链路层地址而采取的机制之一。实际上,dp地址就是交换机所在的段(网络)中唯一的标志该交换机的地址。dp地址的长度根据交换机的类型而有所不同,s系列交换机的dp地址为4个字节,d系列交换机的dp地址则为6个字节。
在校验vlan转发环节和datapath转发环节,交换机需要标注每个端口的dp地址。VLAN转发时,该端口是否为tag口;DPID转发时,该端口是否支持发出;vport转发时,该端口是否支持绑定虚拟端口,都需要这个dp地址。交换机用dp地址标记不同的端口,可以保证不同的端口在广播和单播时不会互相影响。
在OpenFlow技术中,每个交换机都分配有一个唯一的datapath id(dpid),而datapath id是dp地址的一种表现形式。控制器通过向交换机发送OpenFlow消息来控制网络,必须指明所控制交换机的dpid。此时,交换机需要根据dpid在自己的转发表中查找对应的dp地址,从而找到与该控制器相连的端口。
dp地址的生成方式需要考虑到交换机在不同的运行模式下的情况:在正常运行模式下,dp地址由交换机自己生成和管理;而在维护模式下,需要管理员手动配置dp地址。
在正常运行模式下,交换机会根据自己的dpid和相应的MAC地址生成一个全局唯一的dp地址。具体生成方式如下:
对于S系列交换机:
4字节的dp地址格式为:
(0x21000000)+ (0x00000000)+第4位到第7位的dp地址+第8位到第11位的dp地址
对于D系列交换机:
6字节的dp地址格式为:
第1位到第3位为D系列交换机主控制器的MAC地址,第4位到第6位为D系列交换机主控制器的第1-3个端口MAC地址。
OpenFlow协议是通过Ethernet Type=0x800和TCP port=6653来进行通信的。当交换机接收到一个OpenFlow消息时,交换机会根据OpenFlow消息中的dpid字段查找转发表,从而得到与控制器相连接的端口,然后将OpenFlow消息转发到该端口。当交换机向控制器主动发送OpenFlow消息时,交换机会在消息中加入自己的dpid以便主控制器识别。