Category : CREATED BY JENKINSBOT

自旋锁
在多处理器环境下,用于保护数据。
自旋锁锁住的进程一直旋转,而不是睡眠,因此能够用在中断等禁止睡眠的场景。
示例代码:

spin_lock(shost->host_lock);
shost->host_busy++;
spin_unlock(shost->host_lock);

信号量
类似于自旋锁,也是保护数据。
但是,如果无法获取信号量时,进程将进入睡眠状态 ⇒ 所以不能在中断中使用。
原子变量
原子变量提供 原子的、不可中断的 操作。如下所示:

atomic_t mapped[……]

Read more

Work Queue 类似与 tasklet,都用于延缓执行。但是 Work Queue 具有自己的 Process Context,能够休眠,也可被调度。
Kernel 初始化,会创建 kwventd_wq 工作队列,同时为其创建 Kernel Thread(每个 CPU 具有独立的内核线程)
Kernel 还提供 create_workqueue() 和 create_singlethread_workqueue() 函数,以允许用户创建自己的工作队列及执行线程。[……]

Read more

概述介绍
PIM 称为协议无关组播。协议无关,指的是与单播路由协议无关,即 PIM 不需要维护专门的单播路由信息,只要有可用的单播路由即可。还是那句话,组播不能独立运行,而是需要在单播网络基础上运行。
作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行 RPF 检查,检查通过后创建 Multicast Routing Table,从而转发组播报文。
两种模式(变体)
目前在实际网络中,PIM 主要有两种模式: 1)PIM-DM(PIM-Dense Mode,PIM 密集模式) ; 2)PIM-SM(PIM-Sparse Mode,PIM 稀疏模式)[……]

Read more

概述介绍
到目前为止,IGMP有三个版本:IGMPv1(近乎废弃)、IGMPv2(在 ASM 中使用 )、IGMPv3(在 SSM中使用);
机制 IGMPv1 IGMPv2 IGMPv3 查询器选举 依靠其他协议 自己选举 自己选举 成员离开方式 静默离开 主动离开 主动离开 特定组查询 不支持 支持 支持 指定源、组 不支持 不支持 支持 版本兼容性 IGMPv1 IGMPv1、IGMPv2
IGMP Route Table, IGMP Group Table, PIM Route Table, Multicast Route Table[……]

Read more

概述介绍

IGMPv1 主要基于 Query 和 Report 机制完成组播组管理。在网络中,大致工作过程如下: 1)组播路由器被称为 IGMP Querier(Querier 查询器),向共享网络上所有主机和路由器发送的 Membership Query(普遍组查询报文)查询,用于查询哪些组播组存在成员。 2)主机向 IGMP Querier 发送的 Membership Report(成员关系报告报文)报文,用于申请加入某个组播组或者应答查询报文;
通过 Query 与 Report 报文,IGMP Querier 可以解到该网段内哪些组播组存在成员。 查询器和非查[……]

Read more

问题描述
出于安全考虑,我们希望 Multicast Receiver 能够只选择接收从特定 Multicast Source 发来的组播数据,即 Multicast Receiver 需要告知组播网络,接收来自哪些特定 Multicast Source 的组播流量。
IGMPv1 与 IGMPv2 的报文中均无法携带 Multicast Source 的信息,因此无法配合 SSM 使用(其实可使用 SSM Mapping 功能解决这个问题)。
解决方案
IGMPv3 主要是为了配合 SSM(Source-Specific Multicast)模型发展起来的,提供在报[……]

Read more

问题描述
IGMPv1 有一定缺陷: 1)IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发。 2)IGMPv1 IGMP Querier 选举必须要依赖PIM协议,导致 IGMP Querier 选举不够灵活。
解决方案
IGMPv2 vs. IGMP v1
在保持对 IGMPv1 兼容的同时,IGMPv2 还改善 IGMPv1 的缺陷。
相同点: 1)协议兼容:IGMPv2 能与 IGMPv1 兼容。 2)加组机制:IGMPv2 组成员加组机制与 IGMPv1 基本相同
改进点: 1)选举机制:IGMPv[……]

Read more

Membership Query

IGMPv3 Query 报文重要字段说明:
Type:报文类型,取值为0x11,IGMPv3的查询报文共有三类(通过其他字段是否有值来区分): 1)普遍组查询报文(General Query),作用与IGMPv1、IGMPv2中的普遍组查询报文作用一致。 2)特定组查询报文(Group-Specific Query),作用与 IGMPv2 中的特定组查询报文作用一致。 3)特定源组查询报文(Group-and-Source-Specific Query),用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或[……]

Read more

IGMPv1

Version:IGMP 版本,IGMPv1 值为 1;
Type:报文类型。该字段有以下两种取值: 1)0x1:表示普遍组查询报文(Memebership Query ); 2)0x2:表示成员关系报告报文(Memebership Report);
Group Address:组播组地址。 1)在 Memebership Query 中,该字段设为 0; 2)在 Memebership Report 中,该字段为成员加入的组播组地址;
在 IP Layer 中,Memebership Query 与 Memebership Report[……]

Read more

配置命令(Huawei)
使能 IGMP 功能:

[Huawei – GigabitEthernet1/0/0] igmp enable
[Huawei – GigabitEthernet1/0/0] igmp version number // 配置IGMP版本

// 查看接口的IGMP配置和运行信息
<Huawei>display igmp interface

// 查看加入组播组的成员信息
<Huawei>display igmp group

IGMP Snopping

// 使能IGMP snopping功能
[H[……]

Read more

问题描述
现网中可能存在一台 IGMP Querier 需要管理大量 Multicast Receiver 的情况,大量 Multicast Receiver 频繁加入/离开组播组时,会产生大量的 Membership Query、Membership Report 报文,从而给 IGMP Querier 带来较大的处理压力。
解决方案
通过 IGMP Proxy 功能,能够减少 IGMP Querier 压力;
原理简述
通过 IGMP Proxy 功能: 1)IGMP Proxy 将成员关系报告/离开报文汇聚后,再统一上送给 IGMP Querier; 2)I[……]

Read more

问题描述
现网中存在部分只能运行 IGMPv 1与 IGMPv2 的老旧终端,在部署 SSM 模式的组播时,由于 IGMPv1 与 IGMPv2 报文中无法携带 Muticast Source 信息,因此无法使用 SSM 模式的组播网络。
解决方案
IGMP SSM Mapping,通过静态的将 Multicast Source 与 Multicast Group 进行绑定,使得 IGMPv1 与 IGMPv2 的组成员也能接入SSM组播网络。
注意事项:无论使用 IGMPv1、IGMPv2、IGMPv3加入SSM组播组,SSM Multicast Group 的地址[……]

Read more

问题描述
当组播数据从最后一跳路由器发往组播组成员时,往往会经过交换机。由于组播数据的 DST-MAC-Address 为 Multicast MAC Address,默认情况 交换机将泛洪此类数据帧,有可能导致不同组的组播流量会被别组的成员接收。
为什么交换机不会学习 Multicast-MAC-Address?由于组播报文的目的地址为组播组地址,通过映射得到 Multicast-MAC-Address 的,在二层设备上多个接口会出现相同的 MAC Address,这与单播 MAC Address 学习机制冲突。如果增加对这类 MAC Address 学习,会增加设备研发的技术[……]

Read more

问题描述
在 IP Multicast 中,通信特点是报文从 Multicast Source 发出,被转发到一组特定的 Multicast Receiver;
但是 Multicast Source 不关注 Multicast Receiver 的位置信息(这种一对多关系,导致 Multicast Source 无法关心 Multicast Receiver 的位置)
所有组播数据转发需要依赖组播网络,才能将数据发送至 Multicast Receiver,因此组播网络需要知道组成员的位置与组成员的所加组播组。
解决方案
组播网络感知组播组成员有两种方法:[……]

Read more

配置命令(Huawei)
简单实验

配置:

// 路由器的互联接口
[Huawei] multicast routing-enable
[Interface] pim dm

// 在接收端的路由器
[Huawei] multicast routing-enable
[Interface] pim dm
[Interface] igmp enable # igmp static-group 239.1.1.1

// 注意事项
// 1)设备设备都要正确配置,否则组播流量是不会下发的。比如,如果没有终端加入组播组,则组播流量不会下发。
// 2)在下游接口中,[……]

Read more

问题描述
组播网络需要感知在当前网络内的组播组成员,才能决定是否向当前网络内转发组播流量。
这能够通过静态配置实现,即在路由器上明确声明当前网络内的组播设备以及所在组播组。
但静态配置的缺点也很明显:灵活性差,配置工作量大,不利于大规模的组播网络扩展。
解决方案
IGMP 是 TCP/IP 协议族中负责 IPv4 组播成员管理的协议(IPv6 使用 MLD 协议),用来在 接收者主机 和 与其直接相邻的组播路由器 间建立和维护组播组成员关系。
IGMP 通过在 组播组成员 和 组播路由器间 交互 IGMP 报文实现组成员管理功能,IGMP 报文封装在[……]

Read more