基于ONOS的SDN-IP架构概述篇

2023-11-08 21:18
文章标签 ip 概述 架构 sdn onos

本文主要是介绍基于ONOS的SDN-IP架构概述篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        编者按:SDN-IPONOS上的一个应用程序,允许软件定义网络使用标准的边界网关协议(BGP)连接到外部网络。从BGP角度看,SDN网络表现为单一的自治系统(AS),其行为与任何传统的AS一样。基于ASSDN-IP应用提供BGPONOS之间的集成整合机制,在协议层SDN-IP的行为作为一个有规则的BGP发言人。从ONOS的角度来看,它只是使用其服务,在SDN数据平面安装和更新相应的转发状态的应用程序。


架构目标

1.1 SDN-IP设计目标

(1)兼容性CompatibilitySDN-IP可以与已经使用BGP的网络集成,外部、内部、或两者之间都可以,兼容性很好。

(2)操作灵活性Operational flexibilitySDN-IP可以在一个或多个ONOS实例中运行。SDN-IP也可以在多种BGP的部署方案中使用,体现出很强的灵活性。

(3)高可用性High availabilityHA):SDN-IP应用程序本身提供HA服务。只要有其中一个SDN-IP应用实例在运行,SDN-IP服务就会保持无缝连接。此外,SDN-IP利用提供ONOSHA机制在数据平面中维持一致的转发状态。

(4)可扩展性Scalability:可以通过正在运行的基于BGP网络和多个ONOS集群的SDN-IP控制大型的软件定义网络。

(5)协议兼容性和供应商的独立性Protocol compatibility and vendor independenceSDN-IP依赖于标准的BGP协议交换网络信息,并且不需要任何专有或特定于供应商的扩展。

1.2 架构概述

SDN-IP架构如图所示:

连通性

2.1 SDN-IP应用intents

下面是两种类型的SDN-IP使用应用intents的简要说明。

1)单点对单点的intents

    在外部路由器和SDN BGP Speakers之间建立BGP对等会话使用单向单向intents。每个intentsSDN网络中连接两个连接点。每个连接点包含以下信息:SDN交换机的DPID、交换机Port和连接的BGP Speaker路由器的MAC地址。

2)多点对单点的intents

    多点对单点的intents用于与外部网络的主机连接在一起的单向intents。每个intent与每个IP前缀(目的IP)相关联,并连接SDN网络的入口连接点与单一的出口连接点,指向下一跳路由器的目的IP。在SDN网络的边缘入口,一个IP包匹配目的IP地址。选择最好最优的转发项匹配转发数据包到相应的出口连接点。此外,该数据包被转发之前,应用“改变目的MAC地址”,使得包含出口IP路由器的数据包转发到目的MAC地址。

2.2 SDN数据平面连通

SDN-IP网络的数据平面主要用于以下情况:

 (1)进行内部BGP Speaker和外部BGP路由器(配置eBGP peerings)之间的BGP流量控制。

 (2)横穿SDN-IP网络的外部IP网络之间数据流量传输。

eBGP 控制流量与每个eBGP 对等的操作有关。这种流量在eBGP 对等操作配置的基础上是点对点的、双向的,且终点是相对静态设定的。当一个数据平面失败,可能会导致终点之间的路径改变。这种故障可被自动检测且相关的intents会被ONOS重新设置路由。目前,具体的连接点与每个BGP Speaker相关,且外部BGP路由器需要在SDN-IP配置文件中手动配置,但是将来这种需求会被淘汰。

    传输数据流量的路径是通过由外部BGPpeers发布的BGP路由定义。类似于常规的BGP部署,这些路由是相对动态的,且它们的数量非常大。如果BGP peer通告特定IP前缀的路由,并且被选为路由最好的下一跳地址,SDN-IP将负责建立相应的数据路径。所有的流量决定进剩余外部IP网络的IP前缀被转发向最匹配的外部下一跳BGP路由器上。ONOS应用intents的情况下,通过创建一个多点对单点应用intents实现IP前缀:出口路由器(即最佳的下一跳路由器)是(出口)单点intent,其余外部BGP路由器是(入口)多点的intents


    SDN-IP应用负责生成多点对单点的应用intents请求和用于更新BGP路由动态响应的intentsONOS本身负责汇编这些请求、在交换机数据平面安装相应的转发流和以防SDN网络发生故障重新设置路由的intents

2.3 SDN控制平面连通

    在SDN网络和SDN-IP应用程序实例中BGP Speaker通信使用iBGP。对等会话在控制平面中创建,因此,每一个BGP Speaker连接到它。

    在任何的BGP部署中 BGP SpeakerSDN-IP应用实例是互连的:一个完整的iBGP网状、路由反射等。唯一的区别是,在SDN-IP实例它们之间不需要iBGP peerings,他们只需要与BGP Speaker互连即可。

    SDN-IP实现了IBGP协议的子集:只接收处理来自BGP SpeakerBGP路由信息,但从来不发起或重新发送BGP路由。一旦SDN-IP接收来自外部路由器(经由BGP Speaker接收)的通知,它将路由信息变换成intents请求给ONOSONOS本身将其转换交换机中的OpenFlow流表项。

    BGP Speaker使用iBGP传输路由信息给SDN-IP应用实例,当在常规的BGP部署中,通过全网或者使用路由相应服务器实现互连通是非常重要的。因此,我们可以使用BGP本身所提供的故障失效性。SDN-IP应用程序实例之间是不需要iBGP peering的:peering是在BGP SpeakerSDN-IP应用程序实例之间的。

2.4 高可用性支持

    SDN-IP提供使用热备份模式支持高可用性。SDN-IP应用程序可以加载在多个ONOS实例。所有的SDN-IP应用监听路由更新BGP的到达信息,但只有一个SDN-IP实例被指定为主实例负责推送intentsONOS。如果主实例失败,剩余实例中的一个将成为新的主实例继续推送intentsONOS

    SDN-IP使用ONOS领导选举服务来选择主SDN-IP实例。我们必须确保在任何时间只有一个实例推送intents,防止错误的intents被推送到ONOS。当每个SDN-IP实例启动时,它参与领导选举试图成为主实例。选举确保在任一时间只有一个实例可以是主实例。当主实例发生故障,选举机制检测到故障,并允许另一个实例接管负责成为主实例。新的主实例首先进行intents同步保证intents更新之前学习的BGP路由。一旦同步完成,主实例正常工作,为响应BGP更新继续安装和删除intents

    尽管SDN-IP应用程序支持HA(高可用性),该系统仍然容易受到组件故障,除非内部BGP SpeakerBGP peer会话之间有冗余。每个SDN-IP实例能够接收来自BGP SpeakerBGP更新,确保多个内部BGP Speaker部署在SDN网络中。

限制

SDN-IP应用程序的当前实施中具有以下限制:

 (1)详细配置信息只能在SDN-IP启动之前配置。启动后用户不能改变配置,例如,当SDN-IP运行时,用户不能添加其他外部BGP peer

 (2)只有传输IP流量被支持。也就是说,SDN-IP网络里来自主机的或者决策于主机的IP流量不支持。作为应急措施,用户可以手动创建专门的intents允许内部主机与外部网络的通信未来这应该是SDN-IP自动完成的。

 (3)SDN-IP应用默认监听BGP连接的是非标准端口2000,这不是用于BGP连接的正常标准端口179。但是这个端口号是可配置的,它可以配置为179 ,但必须以root身份运行绑定到一个受保护的端口。以root身份运行ONOS目前还不支持。

 (4) ONOS实例之间SDN-IP不会进行负载均衡。所有的工作是由一个单一的主实例进行。如果一个实例失败,可以切换到备份的情况下运行。

 (5)SDN-IP应用端没有明确的IBGP会话配置。默认情况下,SDN-IP应用将接受所有BGP 开放消息,并会自动配置来使用原始BGP SpeakerAS号。

 (6)如果所有的SDN-IP应用程序实例被卸载,相关的应用程序intents不会自动从ONOS中删除。

 (7)如果下一跳的MAC地址发生变化,不会更新intents而使流量将停止流动。

 (8)目前只支持IPv4

 (9)外部BGP路由器和内部BGP Speaker间的peer会话必须使用TCP端口179进行对等连接。只有TCP连接到端口179才被允许进出SDN网络的对等IP地址。

 (10) 由于intents框架的局限性,在1.0.0版本系统可以处理约15000路由。

本文来源于SDNLAB,可点击此阅读原文。如果您对本文感兴趣,可参与以下互动方式与作者近距离交流。

如果您对本文感兴趣,可参与以下互动方式与作者近距离交流。

(1) 微博(http://weibo.com/sdnlab/


(2) 微信(账号SDNLAB)


(3) QQ群

      SDN研究群(214146842)

      OpenDaylight研究群(194240432)




 


 



这篇关于基于ONOS的SDN-IP架构概述篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372569

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re