SPTN

SPTN网络架构解析

传送平面总体架构

传送平面提供两点之间的双向或单向的用户分组信息传送,也可以提供控制和网络管理信息的传送,并提供信息传输过程中的OAM 和保护恢复功能。

传送平面包括MPLS-TP 接入点、MPLS-TP 传送点、MPLS-TP 服务点等三类功能实体,功能实体也由各类模块组成,具体内容看文献内容,需要了解三点的作用。传送平面承载、传送客户层各种业务,并保证客户业务信息的透明性。

S-SCN架构:SPTN控制网络建立一张设备路由信息可互达的网络,目的是实现控制器与控制器,控制器和传送设备之间的控制通道,保证控制平面之间、控制平面和传送平面之间可达。

控制平面的总体架构:

控制平面通过南向接口与传送平面进行交互,通过北向接口与各种应用交互,通过I1接口与管理平面EMS/SNMS进行交互,通过I2接口与管理平面BSS、OSS进行交互。

控制器是部署在传送平面之外的软件框架和部件,对传送平面硬件转发进行控制,并向上层应用提供服务。控制平面功能由D-Controller和层次化S-Controller实现。

每个控制域内部署至少一对D-Controller。传送设备与D-Controller相连;在控制域间,层次化S-Controller连接多个D-Controller,完成跨域控制。控制平面需要具备可靠性与安全性,要给它配置防火墙。当控制平面失效时不要影响传送平面

S-Controller是SPTN架构中的核心,通过开放的北向接口应用支持SPTN网络的应用场景,负责端到端业务的管理和下发,并且负责跨控制域业务的路径计算。

S-controller(与D-controller)总体架构分为北向接口适配层、业务管理层、网络资源层、南向接口适配层,以及通用功能和外部接口。北向接口适配层提供S-Controller向上层控制器或APP的接口,采用RestConf协议;提供对上层控制器、应用平面的鉴权认证功能。业务管理层主要负责管理L2VPN、L3VPN等业务控制,包括业务创建、查询等功能,并负责业务OAM管理、业务性能监控、策略等功能,支持与下层控制器协同建立跨域隧道的能力。网络资源层负责管理控制器本层的拓扑,应支持处理D-Controller上报的拓扑数据,并建立本层内的跨域拓扑。应支持建立本S-Controller与下层控制器的连接关系。南向接口适配层是S-Controller与下层控制器交互的接口,采用RestConf协议。通用功能包括S-Controller本身的安全管理、日志管理等通用功能。外部接口包括与管理平面的接口。

D-Controller实现对数据平面的转发控制,在控制器中管理网络资源并基于客户需求进行网络虚拟化,通过开放的北向接口应用支持SPTN网络的应用场景,实现对本域L2、L3业务进行编排和配置下发。D-Controller架构中各部分的作用与S-controller不同具体的看文献

D-Controller的功能要求:

业务控制及建立:业务响应,PW建立,隧道建立,路由计算,标签分配,回滚功能等

业务响应:应支持响应上层控制器或APP下发的业务建立请求,包括L2VPN、L3VPN、CES等业务请求

PW建立:应支持根据上层控制器或APP下发的请求及策略自动创建PW,并动态分配PW转发标签。

隧道建立:应支持根据上层控制器或APP下发的请求及策略创建隧道,并为隧道动态分配转发标签。

路由计算:应支持根据上层控制器或APP下发的请求及策略计算域内路由,并将路由结果通过北向接口上报给上层控制器或APP。

标签分配:应支持根据上层控制器或APP下发的请求及策略动态分配标签并通过北向接口上报给上层控制器。

回滚功能:应支持业务建立的事务操作,应支持S-Controller下发的事务启动、事务回滚操作。

应用平面

应用平面包括APP Client层以及APP Server层,应用分为面向运营商APP以及面向客户APP,每种应用可以开发多种APP Client。

运营商APP Client和APP Server之间I4接口、客户APP和APP Server之间I5接口均采用https协议实现, APP和控制器之间NA1接口采用标准化北向接口,采用RestConf协议,APP服务器和BSS之间I3接口待研究。APP Server支持对不同APP Client权限进行鉴权控制

管理平面:不作为主要了解内容

骨干传送网分为省际骨干传送网、省内骨干传送网。城域传送网分为城域骨干传送网和有线接入网,组网方式支持环网、网状网和链状网等网络拓扑。SPTN网络在骨干传送网和城域传送网分别部署D-Controller以及EMS/SNMS,域间部署S-Controller进行跨域业务协同。

void adc_routine_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time) { uint32_t rsq, sampt; /* ADC routine sequence config */ if(rank < ADC_ROUTINE_CHANNEL_RANK_SIX) { /* the routine sequence rank is smaller than six */ rsq = ADC_RSQ2(adc_periph); rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * rank))); /* the channel number is written to these bits to select a channel as the nth conversion in the routine sequence */ rsq |= ((uint32_t)adc_channel << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * rank)); ADC_RSQ2(adc_periph) = rsq; } else if(rank < ADC_ROUTINE_CHANNEL_RANK_TWELVE) { /* the routine sequence rank is smaller than twelve */ rsq = ADC_RSQ1(adc_periph); rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * (rank - ADC_ROUTINE_CHANNEL_RANK_SIX)))); /* the channel number is written to these bits to select a channel as the nth conversion in the routine sequence */ rsq |= ((uint32_t)adc_channel << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * (rank - ADC_ROUTINE_CHANNEL_RANK_SIX))); ADC_RSQ1(adc_periph) = rsq; } else if(rank < ADC_ROUTINE_CHANNEL_RANK_SIXTEEN) { /* the routine sequence rank is smaller than sixteen */ rsq = ADC_RSQ0(adc_periph); rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * (rank - ADC_ROUTINE_CHANNEL_RANK_TWELVE)))); /* the channel number is written to these bits to select a channel as the nth conversion in the routine sequence */ rsq |= ((uint32_t)adc_channel << (ADC_ROUTINE_CHANNEL_RANK_LENGTH * (rank - ADC_ROUTINE_CHANNEL_RANK_TWELVE))); ADC_RSQ0(adc_periph) = rsq; } else { } /* ADC sampling time config */ if(adc_channel < ADC_CHANNEL_SAMPLE_TEN) { /* the routine sequence rank is smaller than ten */ sampt = ADC_SAMPT1(adc_periph); sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH * adc_channel))); /* channel sample time set*/ sampt |= (uint32_t)(sample_time << (ADC_CHANNEL_SAMPLE_LENGTH * adc_channel)); ADC_SAMPT1(adc_periph) = sampt; } else if(adc_channel <= ADC_CHANNEL_SAMPLE_EIGHTEEN) { /* the routine sequence rank is smaller than eighteen */ sampt = ADC_SAMPT0(adc_periph); sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH * (adc_channel - ADC_CHANNEL_SAMPLE_TEN)))); /* channel sample time set*/ sampt |= (uint32_t)(sample_time << (ADC_CHANNEL_SAMPLE_LENGTH * (adc_channel - ADC_CHANNEL_SAMPLE_TEN))); ADC_SAMPT0(adc_periph) = sampt; } else { } }函数解析
09-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值