梅州网站建设中国建设人才信息网站查询
news/
2025/9/22 18:33:58/
文章来源:
梅州网站建设,中国建设人才信息网站查询,学校做网站难吗,wordpress提示恶意注册为什么要仿真随机路由#xff1f;
路由器测试中#xff0c;为了最大程度还原现网路由情况#xff0c;评估路由器在现网环境下稳定工作各项指标#xff0c;需要对导入路由进行离散仿真#xff0c;目前路由仿真可分为导入路由与生成路由两种方式#xff0c;导入路由需要现…为什么要仿真随机路由
路由器测试中为了最大程度还原现网路由情况评估路由器在现网环境下稳定工作各项指标需要对导入路由进行离散仿真目前路由仿真可分为导入路由与生成路由两种方式导入路由需要现网路由表导入本文讨论重点为生成路由方式。
自动化生成路由能解决什么问题
使用用户界面生成路由时可根据离散模型生成路由但生成路由与现网路由相比只注重路由段离散未体现AsPath、Community等BGP路由参数离散使用自动化生成路由可根据定义规则进行生成。
如何使用自动化生成随机路由
信而泰Renix平台提供了python API接口,可使用python API进行路由灵活定义。假设路由需求如下配置Port口1个包含20个IBGP个IBGP通告10个路由段、共10wIPv410wIPv6路由要求路由掩码随机选择AsPath随机选择、Connmity随机选择。 本文选择基础API使用信而泰APIrenix_py_api、MiscLibrary不另做定义使用时需安装相关环境。代码解析如下
导入相关库
#!/usr/bin/python
-- coding: UTF-8 -
import time from renix_py_api.renix import * from MiscLibrary.base import * import logging import random import re
初始化Python环境及定义参数
if name ‘main’: # 初始化环境 print(‘######################初始化环境######################’) print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))) ############################################################### api MiscAPI() initialize(logTrue, log_levellogging.INFO, log_handleLogHandle.LOG_FILE) ############################################################### # 占用测试仪端口 chassis_DY “10.1.1.7” port_DY_1 “//10.1.1.7/3/1” # 路由起始地址 start_ip1 “20.0.0.0” start_ipv61 “2023::” #bgp路由参数 RgpSessionCount 20 BgpRouteBlock 10 BgpRouteBlockv6 10 ipv4routecount 100000 ipv6routecount 100000 #ipv4路由掩码 MaskMin 20 MaskMax 30 # ipv6路由掩码 PrefixMin 80 PrefixMax 120 # bgp as_pathcommunity限制 AsPathMaxLength 8 CommunityMaxLength 8 ############################################################### #其它参数 Ipv4RoutePerSession int(ipv4routecount / RgpSessionCount) ipv6PrefixPerSession int(ipv6routecount / RgpSessionCount) Ipv4CountRandonMax int(Ipv4RoutePerSession / BgpRouteBlock) Ipv4CountRandonMin int(Ipv4CountRandonMax * 0.5) Ipv6CountRandonMax int(ipv6PrefixPerSession / BgpRouteBlockv6) Ipv6CountRandonMin int(Ipv6CountRandonMax * 0.5) print(‘######################初始化完成######################’) print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time())))
创建端口及映射机箱
print(‘#######################连接机箱#######################’) print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))) sys_entry get_sys_entry() sys_entry.edit(ProductType1) chassis ConnectChassisCommand(chassis_DY) # chassis.execute() # 占用端口、端口上线 port_1 Port(uppersys_entry, Locationport_DY_1, name‘port_1’) # BringPortsOnlineCommand(PortList[port_1.handle,port_2.handle]).execute() print(‘######################连接成功######################’) print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))) print(‘#######################创建IBGP#######################’) print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))) # 参数生成器定义 GeneratorRouteridv4 api.address_modifier(Startr’192.168.0.1’, Step1, Count1000, Offset0) GeneratorRouteridv6 api.address_modifier(Startr’192:168::1’, Step1, Count1000, Offset0) GeneratorMacAddress api.address_modifier(Startr’00:10:94:00:00:01’, Step1, Count1000, Offset0) GeneratorIPv4Address api.address_modifier(Startr’10.0.0.2’, Step1, Count1000, Offset8) GeneratorIPv6Address api.address_modifier(Startr’2000::2’, Step1, Count1000, Offset80) #接口生成interface for x in range(RgpSessionCount): #接口参数定义 Routeridv4 api.generator_next(GeneratorRouteridv4) Routeridv6 api.generator_next(GeneratorRouteridv6) MacAddr api.generator_next(GeneratorMacAddress) IPv4Addr api.generator_next(GeneratorIPv4Address) IPv6Addr api.generator_next(GeneratorIPv6Address) IPv4GWAddr api.ipv4_address_hopping(IPv4Addr, Mask32, Type‘decrement’, Step1) IPv6GWAddr api.ipv6_address_hopping(IPv6Addr, Mask128, Type‘decrement’, Step1) # 创建IPv4接口 interface Interface(upperport_1, RouterId Routeridv4, Ipv6RouterId Routeridv6) Interface_temp “Interface_” str(x1) build_Dual BuildInterfaceCommand(InterfaceListInterface_temp, NetworkLayers[‘eth’, ‘vlan’], TopLayers[‘ipv4’, ‘ipv6’]) build_Dual.execute() eth_layer interface.get_children(‘EthIILayer’)[0] eth_layer.edit(Address MacAddr) vlan_layer interface.get_children(‘VlanLayer’)[0] vlan_layer.edit(VlanId x1 ) ipv4_layer interface.get_children(‘Ipv4Layer’)[0] ipv4_layer.edit(Address IPv4Addr , GatewayIPv4GWAddr) ipv6_layer interface.get_children(‘Ipv6Layer’)[0] ipv6_layer.edit(Address IPv6Addr , GatewayIPv6GWAddr)
创建BGP协议及路由
创建BGP协议 BgpSession BgpProtocolConfig(upperport_1)BgpSession.edit(AsNumber65000)BgpSession.edit(DutAsNumber65000)BgpSession.edit(UseGatewayAsDutIpFalse)BgpSession.edit(DutIpv4AddressIPv4GWAddr)BgpSession.edit(DutIpv6AddressIPv6GWAddr)# 绑定Dual接口和协议select_interface SelectInterfaceCommand(ProtocolList[BgpSession.handle], InterfaceList[interface.handle])select_interface.execute()# IPv4路由block创建FirstRoute start_ip1Ipv4RouteCount 0for y in range(BgpRouteBlock):mask random.randint(MaskMin, MaskMax)if y BgpRouteBlock-1:RouteCount Ipv4RoutePerSession - Ipv4RouteCountelse:RouteCount random.randint(Ipv4CountRandonMin, Ipv4CountRandonMax)Ipv4RouteCount Ipv4RouteCountRouteCountoffset 32 - maskif x 0 and y 0:# bgp参数修改BgpRoute BgpIpv4RoutepoolConfig(upperBgpSession)BgpRoute.get()BgpRoute.edit(FirstRouteFirstRoute)BgpRoute.edit(PrefixLengthmask)BgpRoute.edit(RouteCountRouteCount)GeneratorIPv4Route api.address_modifier(StartFirstRoute, StepRouteCount, Offsetoffset, Count1000)IPv4Route api.generator_next(GeneratorIPv4Route)IPv4Route api.generator_next(GeneratorIPv4Route)else:BgpRoute BgpIpv4RoutepoolConfig(upperBgpSession)BgpRoute.get() BgpRoute.edit(FirstRouteIPv4Route) BgpRoute.edit(PrefixLengthmask) BgpRoute.edit(RouteCountRouteCount) Start IPv4Route GeneratorIPv4Route api.address_modifier(StartStart, StepRouteCount, Offsetoffset, Count1000) IPv4Route api.generator_next(GeneratorIPv4Route) IPv4Route api.generator_next(GeneratorIPv4Route) # bgp参数修改 as_path_length random.randint(2, AsPathMaxLength) community_length random.randint(2, CommunityMaxLength) as_path_list list() community_list list() AsPathIncrement_list list() as_path_tem str() community_tem str() communityIncrement_list list() for z in range(as_path_length): as_path random.randint(300, 64000) as_path_list.append(as_path) for z in range(community_length): community1 random.randint(1, 65535) community2 random.randint(1, 65535) community str(community1) ‘:’ str(community2) community_list.append(community) for i in range(len(community_list) - 1): community community_list[i] community_tem community community_tem ‘,’ community_tem str(community_list[-1]) AsPathPerBlockCount int(RouteCount / 6.5) for z in range(len(as_path_list)): AsPathIncrement_list.append(1) for z in range(len(community_list)): Temp str(1) ‘:’ str(1) communityIncrement_list.append(Temp) BgpRoute.edit(AsPathas_path_list) BgpRoute.edit(AsPathIncrementAsPathIncrement_list) BgpRoute.edit(AsPathPerBlockCountAsPathPerBlockCount) BgpRoute.edit(Communitycommunity_tem) BgpRoute.edit(CommunityIncrementcommunityIncrement_list) BgpRoute.edit(CommunityPerBlockCountAsPathPerBlockCount) # IPv6路由block创建 FirstPrefix start_ipv61 Ipv6PrefixCount 0 for y in range(BgpRouteBlockv6): mask random.randint(PrefixMin, PrefixMax) if y BgpRouteBlockv6 - 1:RouteCount ipv6PrefixPerSession - Ipv6PrefixCountelse:RouteCount random.randint(Ipv6CountRandonMin, Ipv6CountRandonMax)Ipv6PrefixCount Ipv6PrefixCount RouteCountoffset 128 - maskif x 0 and y 0:# bgp参数修改BgpRoute BgpIpv6RoutepoolConfig(upperBgpSession)BgpRoute.get()BgpRoute.edit(FirstIpv6RouteFirstPrefix)BgpRoute.edit(PrefixLengthmask)BgpRoute.edit(RouteCountRouteCount)GeneratorIPv6Route api.address_modifier(StartFirstPrefix, StepRouteCount, Offsetoffset, Count1000)IPv6Prefix api.generator_next(GeneratorIPv6Route)IPv6Prefix api.generator_next(GeneratorIPv6Route)else:BgpRoute BgpIpv6RoutepoolConfig(upperBgpSession)BgpRoute.get()BgpRoute.edit(FirstIpv6RouteIPv6Prefix)BgpRoute.edit(PrefixLengthmask)BgpRoute.edit(RouteCountRouteCount)Start IPv6PrefixGeneratorIPv6Route api.address_modifier(StartStart, StepRouteCount, Offsetoffset, Count1000)IPv6Prefix api.generator_next(GeneratorIPv6Route)IPv6Prefix api.generator_next(GeneratorIPv6Route)# bgp参数修改as_path_length random.randint(2, AsPathMaxLength)community_length random.randint(2, CommunityMaxLength)as_path_list list()community_list list()AsPathIncrement_list list()as_path_tem str()community_tem str()communityIncrement_list list()for z in range(as_path_length):as_path random.randint(300, 64000)as_path_list.append(as_path)for z in range(community_length):community1 random.randint(1, 65535)community2 random.randint(1, 65535)community str(community1) : str(community2)community_list.append(community)for i in range(len(community_list) - 1):community community_list[i]community_tem communitycommunity_tem ,community_tem str(community_list[-1])AsPathPerBlockCount int(RouteCount / 6.5)for z in range(len(as_path_list)):AsPathIncrement_list.append(1)for z in range(len(community_list)):Temp str(1) : str(1)communityIncrement_list.append(Temp)BgpRoute.edit(AsPathas_path_list)BgpRoute.edit(AsPathIncrementAsPathIncrement_list)BgpRoute.edit(AsPathPerBlockCountAsPathPerBlockCount)BgpRoute.edit(Communitycommunity_tem)BgpRoute.edit(CommunityIncrementcommunityIncrement_list)BgpRoute.edit(CommunityPerBlockCountAsPathPerBlockCount)
# Save the test case to D:\ as the name of bgp_random.xcfg
save_case SaveTestCaseCommand(TestCaseD/bgp_random.xcfg, ProductType1)随机路由生成测试
执行代码后生成配置如下
接口参数 BGP Session IPv4路由 随机变化点路由数量、路由前缀长度、AsPath、AsPath跳变步长、AsPath数量、Community、Community跳变步长、Community数量 IPv6路由 随机变化点路由数量、路由前缀长度、AsPath、AsPath跳变步长、AsPath数量、Community、Community跳变步长、Community数量
DarYu-X系列测试仪
DarYu-X系列高性能网络测试仪是信而泰推出的面向高端路由器等高端数通设备的测试产品具有高性能、高密度、高速率等特点配置信而泰基于PCT架构的新一代测试软件RENIX和X系列测试模块可为提供路由哭喊组网测试解决方案为建立一张高SLA保证、确定性时延、业务感知、灵活业务路径调优的下一代网络保驾护航。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909986.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!