OSPF协议详解:特点、配置与多区域架构

需积分: 5 0 下载量 155 浏览量 更新于2024-06-13 收藏 1.93MB PPT 举报
本资源是一份关于OSPF(Open Shortest Path First,开放最短路径优先)协议的详细讲解PPT,共分为九章,涵盖了OSPF的基础概念、特点、工作原理以及多区域配置等内容。以下是章节概要: 第8章主要回顾了OSPF的基本特性,如它与RIP(Routing Information Protocol,路由信息协议)的主要区别,OSPF的邻居和邻接关系的建立过程,包括不同状态的转换。此外,本章还介绍了OSPF的包类型、网络类型,以及三种核心数据库——路由器LSDB(Link State Database)、路由表,以及单域配置的命令和常用的检查命令。 第9章的重点在于深入理解OSPF的区域概念,包括路由器的分类(如骨干路由器、内部路由器、区域边界路由器ABR和自治系统边界路由器ASBR),链路状态数据库的构成,LSA(Link State Advertisement,链路状态通告)的不同类型,如路由器LSA、网络LSA、网络汇总LSA、ASBR汇总LSA和AS外部LSA等。这部分内容也涉及到了OSPF路由表形成的过程和多区域的配置方法。 生成多区域OSPF的目的是为了提高网络的可扩展性和收敛速度,通过将网络划分为更小的区域来实现。路由器根据其功能被分类为不同类型,它们各自处理区域内的链路状态信息或作为不同区域之间的连接点。例如,ABR负责区域间的路由通告,而ASBR除了区域内的路由,还会处理AS外部路由信息。 总结来说,这份PPT详细地介绍了OSPF的核心技术,包括协议的运作机制、路由器角色划分、区域设计以及多区域配置策略,适合用于深入学习和理解OSPF在网络设计中的应用。通过阅读和学习这些内容,读者能够掌握OSPF在大型网络中的部署和管理技巧。

pytorch代码如下:class LDAMLoss(nn.Module): def init(self, cls_num_list, max_m=0.5, weight=None, s=30): super(LDAMLoss, self).init() m_list = 1.0 / np.sqrt(np.sqrt(cls_num_list)) m_list = m_list * (max_m / np.max(m_list)) m_list = torch.cuda.FloatTensor(m_list) self.m_list = m_list assert s > 0 self.s = s if weight is not None: weight = torch.FloatTensor(weight).cuda() self.weight = weight self.cls_num_list = cls_num_list def forward(self, x, target): index = torch.zeros_like(x, dtype=torch.uint8) index_float = index.type(torch.cuda.FloatTensor) batch_m = torch.matmul(self.m_list[None, :], index_float.transpose(1,0)) # 0,1 batch_m = batch_m.view((-1, 1)) # size=(batch_size, 1) (-1,1) x_m = x - batch_m output = torch.where(index, x_m, x) if self.weight is not None: output = output * self.weight[None, :] logit = output * self.s return F.cross_entropy(logit, target, weight=self.weight) classes=7, cls_num_list = np.zeros(classes) for , label in train_loader.dataset: cls_num_list[label] += 1 criterion_train = LDAMLoss(cls_num_list=cls_num_list, max_m=0.5, s=30) criterion_val = LDAMLoss(cls_num_list=cls_num_list, max_m=0.5, s=30) for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device, non_blocking=True), Variable(target).to(device,non_blocking=True) # 3、将数据输入mixup_fn生成mixup数据 samples, targets = mixup_fn(data, target) targets = torch.tensor(targets).to(torch.long) # 4、将上一步生成的数据输入model,输出预测结果,再计算loss output = model(samples) # 5、梯度清零(将loss关于weight的导数变成0) optimizer.zero_grad() # 6、若使用混合精度 if use_amp: with torch.cuda.amp.autocast(): # 开启混合精度 loss = torch.nan_to_num(criterion_train(output, targets)) # 计算loss scaler.scale(loss).backward() # 梯度放大 torch.nn.utils.clip_grad_norm(model.parameters(), CLIP_GRAD) # 梯度裁剪,防止梯度爆炸 scaler.step(optimizer) # 更新下一次迭代的scaler scaler.update() 报错:File "/home/adminis/hpy/ConvNextV2_Demo/models/losses.py", line 53, in forward return F.cross_entropy(logit, target, weight=self.weight) File "/home/adminis/anaconda3/envs/wln/lib/python3.9/site-packages/torch/nn/functional.py", line 2824, in cross_entropy return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: multi-target not supported at /pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:15

2023-05-29 上传