【Linux】在 Linux 上模拟网络故障
文章目录
- 模拟网络丢包
- 模拟网络延迟、抖动
- 模拟网络包重复
- 模拟网络带宽受限
- 模拟网络错误
- 模拟网络乱序
- 配合 cgroup 进行进程级带宽限制
- 重置网络清空所有规则
模拟网络丢包
# 在`eth0`网络接口上替换排队规则,应用`netem`规则来模拟30%的数据包丢失
tc qdisc replace dev eth0 root netem loss 30%
AI解释:
该命令是在使用Linux系统中的流量控制工具
tc
(Traffic Control)来修改网络接口的行为。具体来说,这个命令的作用是在指定的网络接口上应用一种名为netem
的队列规则,以模拟网络丢包的情况。让我们分解这个命令的各个部分:
tc
:这是Traffic Control工具的缩写,它是Linux内核提供的一个用于控制网络流量的工具集qdisc
:全称为queueing discipline,即排队规则。它定义了数据包在网络接口上的排队和传输方式。replace
:这个操作意味着我们要替换掉当前网络接口上的排队规则。如果指定的排队规则已经存在,它会被新的规则替换;如果不存在,将会创建一个新的排队规则。dev eth0
:这指定了要操作的网络接口设备。在这个例子中,eth0
是网络接口的名称,这可能会根据你的系统和网络配置有所不同。root
:这个关键字指定了排队规则的层级。在这个上下文中,root
意味着我们要替换的是根层级的排队规则,这是最顶层的排队规则,它会影响接口上的所有流量。netem
:这是我们要应用的排队规则的类型。netem
是Network Emulator的缩写,它允许我们模拟各种网络条件,比如延迟、带宽限制、丢包等。loss 30%
:这是我们设置的具体参数,意味着我们要模拟30%的数据包丢失率。这可以用来测试网络应用在高丢包环境下的表现。综上所述,这个命令的作用是在
eth0
网络接口上替换排队规则,应用netem
规则来模拟30%的数据包丢失,以此来测试或演示网络在高丢包条件下的行为。这种模拟在网络性能测试、应用的容错能力测试等场景中非常有用。
模拟网络延迟、抖动
# 在`eth0`网络接口上设置一个队列规则,通过`netem`来模拟平均100ms,正负20ms的网络延迟
tc qdisc replace dev eth0 root netem delay 100ms 20ms
AI解释:
这个命令是在使用Linux系统中的
tc
(Traffic Control)工具来对指定网络接口进行流量控制,具体来说,是通过设置网络模拟条件来测试或调整网络行为。以下是命令各部分的详细解释:
tc
:这是Linux系统中用于流量控制的工具,可以用来管理网络接口上的流量,包括设置带宽限制、延迟、丢包等模拟网络条件。qdisc
:队列规则(queueing discipline)的简称,它定义了数据包在网络接口上的排队和传输方式。tc
工具允许用户创建不同类型的队列规则,以控制数据包的处理方式。replace
:此操作用于替换现有的队列规则。如果指定的队列规则不存在,它将创建一个新的规则;如果已存在,则替换它。dev eth0
:指定了要应用队列规则的网络接口设备。在这个例子中,eth0
是网络接口的名称,这可能会根据你的系统和网络配置有所不同。root
:指定了队列规则的层级。在这里,root
指的是根层级的队列规则,它是最顶层的规则,影响整个网络接口的流量处理。netem
:这是网络模拟器(Network Emulator)的缩写,它允许你在网络接口上模拟各种网络条件,如延迟、带宽限制、丢包等。delay 100ms 20ms
:这是设置的网络延迟参数。netem
使用这个参数来模拟网络传输中的延迟。在这个例子中,100ms
是延迟的平均值,而20ms
是延迟的变化范围(也称为抖动)。这意味着数据包在传输过程中将会被延迟一个在80ms到120ms之间的随机时间。综合来看,这个命令的作用是在
eth0
网络接口上设置一个队列规则,通过netem
来模拟平均100ms,变化范围为20ms的网络延迟。这样的模拟可以用于测试网络应用在特定网络延迟条件下的性能和行为,帮助开发者或网络管理员了解和优化应用在实际网络环境中的表现。
模拟网络包重复
# 在`eth0`网络接口上设置一个队列规则,通过`netem`来模拟30%的数据包重复情况
tc qdisc replace dev eth0 root netem duplicate 30%
AI解释:
该命令是利用Linux系统中的
tc
(Traffic Control)工具来对指定网络接口的流量进行模拟和控制。具体来说,这个命令用于在网络接口上设置一个队列规则,以模拟数据包的重复(也称为数据包复制或克隆)情况。下面是命令各部分的详细解释:
tc
:是Linux系统中用于流量控制的工具,它可以用来管理和控制网络接口上的流量,包括设置带宽限制、延迟、丢包等模拟网络条件。qdisc
:是队列规则(queueing discipline)的简称,它定义了数据包在网络接口上的排队和传输方式。tc
工具允许用户创建不同类型的队列规则,以控制数据包的处理方式。replace
:此操作用于替换现有的队列规则。如果指定的队列规则不存在,它将创建一个新的规则;如果已存在,则替换它。dev eth0
:指定了要应用队列规则的网络接口设备。在这个例子中,eth0
是网络接口的名称,这可能会根据你的系统和网络配置有所不同。root
:指定了队列规则的层级。在这里,root
指的是根层级的队列规则,它是最顶层的规则,影响整个网络接口的流量处理。netem
:是网络模拟器(Network Emulator)的缩写,它允许你在网络接口上模拟各种网络条件,如延迟、带宽限制、丢包等。duplicate 30%
:这是设置的网络模拟参数,用于模拟数据包的重复情况。在这个例子中,30%
表示有30%的概率数据包会被复制或克隆一份。这意味着在网络传输过程中,有30%的机会一个数据包会被复制,原始数据包和复制的数据包都会通过网络发送。综合来看,这个命令的作用是在
eth0
网络接口上设置一个队列规则,通过netem
来模拟30%的数据包重复情况。这样的模拟可以用于测试网络应用在数据包重复条件下的性能和行为,帮助开发者或网络管理员了解和优化应用在实际网络环境中的表现。这种模拟在网络测试和故障排查中非常有用,尤其是在需要评估网络协议对数据包重复的处理能力时。
模拟网络带宽受限
# 在 eth0 网络接口上创建或替换一个 tbf 队列规则,该规则具有 1Mbps 的速率限制,32kbit的突发大小,以及 400毫秒 的延迟
tc qdisc replace dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
AI解读:
这行命令使用Linux系统中的
tc
(Traffic Control)工具来设置网络流量的控制参数,具体来说,是创建或替换一个名为tbf
(Token Bucket Filter,令牌桶过滤器)的队列规则(qdisc)。这个tbf
队列规则将应用于指定的网络接口eth0
,并设置了一系列的流量控制参数。下面是命令各部分的详细解释:
tc qdisc replace
: 这个命令用于替换指定网络接口上现有的根队列规则。如果根队列规则不存在,它将创建一个新的规则。dev eth0
: 这指定了要操作的网络接口设备。在这个例子中,eth0
是网络接口的名称,这可能会根据你的系统和网络配置有所不同。root
: 这个关键字指定了队列规则的层级。在这里,root
指的是根层级的队列规则,它是最顶层的规则,影响整个网络接口的流量处理。tbf
: 这是要创建的队列规则的类型。tbf
是一种基于令牌桶算法的队列规则,它可以平滑流量,防止突发流量对网络造成冲击。rate 1mbit
: 这部分设置了令牌桶的速率,即每秒可以添加到令牌桶中的令牌数量。在这个例子中,速率被设置为1Mbps(兆比特每秒),这意味着理论上每秒钟可以发送1Mbps的流量。burst 32kbit
: 这部分定义了令牌桶的大小,即在发送数据前可以一次性发送的最大数据量。在这个例子中,burst
被设置为32kbit(千比特),这意味着在令牌桶有足够的令牌时,可以一次性发送最多32kbit的数据。latency 400ms
: 这部分设置了网络的延迟,即数据包从发送到被接收方确认的时间。在这个例子中,延迟被设置为400毫秒。综合来看,这行命令的作用是在
eth0
网络接口上创建或替换一个tbf
队列规则,该规则具有1Mbps的速率限制,32kbit的突发大小,以及400毫秒的延迟。这样的设置可以用来模拟网络流量的控制,确保网络流量的平滑传输,防止网络拥塞,并模拟特定的网络延迟。这对于测试网络应用在特定网络条件下的表现非常有用。
模拟网络错误
# 在`eth0`网络接口上设置一个队列规则,通过`netem`来模拟1%的数据包损坏情况
tc qdisc replace dev eth0 root netem corrupt 1%
AI解读:
这行命令使用Linux系统中的
tc
(Traffic Control)工具来模拟网络错误情况。具体来说,它在eth0
网络接口上创建或替换一个netem
类型的队列规则(qdisc),并设置该规则以模拟1%的数据包损坏(corrupt)概率。以下是命令各部分的详细解释:
tc qdisc replace
: 这个命令用于在指定的网络接口上替换现有的根队列规则。如果根队列规则不存在,它将创建一个新的规则。dev eth0
: 这指定了要操作的网络接口设备。在这个例子中,eth0
是网络接口的名称,这可能会根据你的系统和网络配置有所不同。root
: 这个关键字指定了队列规则的层级。在这里,root
指的是根层级的队列规则,它是最顶层的规则,影响整个网络接口的流量处理。netem
: 这是网络模拟器(Network Emulator)的缩写,它允许你在网络接口上模拟各种网络条件,如延迟、带宽限制、丢包等。corrupt 1%
: 这是设置的网络模拟参数,用于模拟数据包在传输过程中出现错误的比率。在这个例子中,1%
表示有1%的概率数据包会被标记为损坏,即在传输过程中模拟数据包出错的情况。综合来看,这行命令的作用是在
eth0
网络接口上设置一个队列规则,通过netem
来模拟1%的数据包损坏情况。这样的模拟可以用于测试网络应用在网络错误情况下的性能和行为,帮助开发者或网络管理员了解和优化应用在实际网络环境中的容错能力。这对于开发和调试网络应用、优化网络配置以及进行网络故障排查都是非常有价值的。
模拟网络乱序
# 在`eth0`网络接口上设置一个队列规则,通过netem来模拟10%的数据包乱序情况
tc qdisc replace dev eth0 root netem reorder 10%
AI解读:
这行命令使用Linux系统中的
tc
(Traffic Control)工具来模拟网络中数据包乱序的情况。具体来说,它在eth0
网络接口上创建或替换一个netem
类型的队列规则(qdisc),并设置该规则以模拟10%的数据包在传输过程中发生乱序的概率。以下是命令各部分的详细解释:
tc qdisc replace
: 这个命令用于在指定的网络接口上创建或替换现有的根队列规则。replace
操作意味着如果已经存在一个根队列规则,它将被新的规则替换;如果不存在,将创建一个新的规则。dev eth0
: 这指定了要操作的网络接口设备。在这个例子中,eth0
是网络接口的名称。需要注意的是,实际的网络接口名称可能会根据你的系统和网络配置而有所不同。root
: 这个关键字指定了队列规则的层级。root
指的是根层级的队列规则,它是最顶层的规则,影响整个网络接口的流量处理。netem
: 这是网络模拟器(Network Emulator)的缩写,它允许你在网络接口上模拟各种网络条件,如延迟、带宽限制、丢包等。reorder 10%
: 这是设置的网络模拟参数,用于模拟数据包在传输过程中出现乱序的情况。在这个例子中,10%
表示有10%的概率数据包会以不同于它们发送时的顺序到达目的地。综合来看,这行命令的作用是在
eth0
网络接口上设置一个队列规则,通过netem
来模拟10%的数据包乱序情况。这样的模拟可以用于测试网络应用在面对网络传输中数据包乱序问题时的表现和行为,帮助开发者或网络管理员了解和优化应用在实际网络环境中的容错能力和处理机制。这对于开发和调试网络应用、优化网络配置以及进行网络故障排查都是非常有价值的。
配合 cgroup 进行进程级带宽限制
# 定义了一个变量`CG_NAME`,其值为字符串`test`。这个变量将用作控制组的名称。
CG_NAME=test
# 创建了一个新的cgroup,并且指定了该cgroup的类型为`net_cls`,`net_cls`是网络分类控制组,它允许你对网络流量进行分类和控制。
sudo cgcreate -g net_cls:${CG_NAME}
# 设置了控制组的`classid`。`classid`是一个标识符,用于在`tc`规则中引用这个控制组。`0x10001`是一个十六进制的数值,这个值需要是唯一的,以避免与其他控制组的`classid`冲突。
sudo echo 0x10001 > /sys/fs/cgroup/net_cls/${CG_NAME}/net_cls.classid# 在`eth0`网络接口上创建了一个新的`htb`队列规则(qdisc),并将其句柄(handle)设置为`1:`。`default 20`指定了默认的流量类(class)的`classid`为`1:20`。
sudo tc qdisc add dev eth0 root handle 1: htb default 20
# 在`eth0`网络接口上创建了一个新的流量类,其`classid`为`1:1`,并且设置了这个流量类的速率(rate)为`10mbit`,即10Mbps。
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
# 在`eth0`网络接口上创建了一个新的过滤器(filter),它将流量分类到之前创建的cgroup。`parent 1:`指定了过滤器将被添加到`htb`队列规则的根句柄下。`protocol ip`指定了过滤器适用于IP协议的流量。`prio 10`设置了过滤器的优先级。`handle 2:`是过滤器的句柄。`cgroup`关键字指明了流量将基于cgroup进行分类。
sudo tc filter add dev eth0 parent 1: protocol ip prio 10 handle 2: cgroup# 验证和监控
# 生成一个1GB的文件
dd if=/dev/zero of=test bs=1M count=1000
# 不做任何限制,进行scp传输
scp test 10.10.10.12:/data/
test 57% 580MB 297.3MB/s 00:01 ETA
# 进行cgroup限制,然后传输
cgexec -g net_cls:${CG_NAME} scp test 10.10.10.12:/data/
test 0% 8992KB 2.3MB/s 07:06 ETA
# 能看出网速被限制住了# 查看所有的tc qdisc/class/filter
tc qdisc show dev eth0
tc class show dev eth0
tc filter show dev eth0
重置网络清空所有规则
# 删除`eth0`接口上的所有qdisc和相关的类
tc qdisc del dev eth0 root
# `tc qdisc show`命令来检查网络接口,确保没有任何qdisc或类存在
tc qdisc show dev eth0
相关文章:
【Linux】在 Linux 上模拟网络故障
文章目录 模拟网络丢包模拟网络延迟、抖动模拟网络包重复模拟网络带宽受限模拟网络错误模拟网络乱序配合 cgroup 进行进程级带宽限制重置网络清空所有规则 模拟网络丢包 # 在eth0网络接口上替换排队规则,应用netem规则来模拟30%的数据包丢失 tc qdisc replace dev …...

腾讯云流量怎么计算的?轻量服务器流量价格表
腾讯云轻量应用服务器套餐带流量包,就是有月流量限制的意思,超出轻量套餐的流量需要另外支付流量费,轻量服务器地域不同超额流量费用也不同,北京上海广州等中国内地地域流量价格是0.8元每GB,中国香港地域流量价格是1元…...
解决Maven Clean过程因内存溢出导致的“Process terminated”问题
正文: 在今天的开发过程中,我遇到了一个意料之外的问题,当我尝试使用 Maven 进行项目清理(maven clean)时,命令行反馈了一个错误信息:“Process terminated”。经过一番排查,发现问…...

十分钟掌握在 PyTorch 中构建一个深度神经网络,基本组件、步骤和代码实现,从导入模块和定义网络结构到训练和评估网络性能。
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 深度神经网络(Deep Neural Networks, DNNs),也被称为人工神经网络(Artificial Neural Networks,ANNs),已成为当今机器学习任务中最流行、最成功的方法之一。这些网络能够表示数据中的复杂关系,并在图像分类、自然…...

BUG:vue表单验证校验不报错,必填都有信息,就是不能正常往下进行
vue表单验证未报错却出现异常 框架bug场景解决办法 框架 UI:element-UI 前端:vue2 bug场景 正常表单里面,有的信息要求必填或者加了一些限制,作为校验验证,只有走到校验才会执行其他行为,比如调用保存接…...

MapStruct入门教程详解:轻松掌握Java Bean映射
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...
Springboot 集成websocket
webSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信--浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 http协议和websocket协议对比 http是短连接 websocket是长连接 http通信是单向的…...
FPGA和ARM学习那个比较好
FPGA和ARM是两种不同的技术,具有不同的应用领域和学习难度。以下是对两者进行比较的一些建议: 1. 应用领域:FPGA主要用于数字电路设计和硬件加速器开发,可在实时系统、信号处理、嵌入式系统等方面发挥重要作用。ARM则是一种处理器…...

你知道 Java 线程池的原理吗?
Java线程池是用于管理和复用线程的机制,它可以帮助开发者有效地管理线程的生命周期和资源,并提高应用程序的性能和稳定性。 1. 线程池概述 在计算机科学中,线程池是一种可用来执行异步任务的线程队列。它主要包含以下几个组成部分ÿ…...
numpy学习笔记(1),不定期更新
在对numpy进行了几个小时的学习后,做出如下学习笔记 1. numpy类型入门 写完这边笔记后,过了几天补充一些理解: numpy处理的主要内容是数组,一维的,二维的,三维的,多维的。numpy的数组与python原…...
如何使用静态IP代理解决Facebook多账号注册并进行网络推广业务?
在当今的数字时代,社交媒体成为了企业进行网络推广的一个重要途径,其中,Facebook是最受欢迎的社交媒体之一,因为它可以让企业通过创建广告和页面来推广他们的产品或服务。 但是,使用Facebook进行网络推广时࿰…...
局部适配器在产品和二次开发中的应用
局部适配器这个说法是本人从产品项目中总结出的一种叫法。原理是在产品项目的某一项业务处理时,嵌入抽象方法和默认实现,以便产品作二次开发时,不用迁分支或重写就适配修改产品工程的局部逻辑。该方法使用原理很简单,但好处明显&a…...

C++之类和对象(上)
目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1访问限定符 4.2 类的两种定义方式 第一种: 第二种: 4.3封装 5.类的实例化 6.类对象模型 1.面向过程和面向对象初步认识 C语言是面向过程的,…...
Linux 测试磁盘读写速度
1、先熟悉两个特殊的设备: (1)/dev/null:回收站、无底洞。 (2)/dev/zero:产生字符。 2、测试磁盘写能力 time dd if/dev/zero of/testw.dbf bs4k count100000 因为/dev//zero是一个伪设备…...

【YOLOv8】Yolov5和Yolov8网络结构的分析与对比
目录 一 YOLOv5 二 YOLOv8 yolo通常采用backbone-neck-head的网络结构。 Backbone 主要负责从输入图像中提取高层次的语义特征,常包含多个卷积层和池化层,构建了一个深层次的特征提取器。Neck通常用来进一步整合与调整backbone提取的特征,有利于将不同…...

无人机低空数字摄影测量系统
一、 系统概述 系统完全基于IDL设计实现,包括界面布局到人机交互再到底层核心函数功能。整体设计框架基于数字摄影测量的专业处理流程,实现了数据输入、数据预处理、影像信息检测、空间定向、地形三维建模、专题信息提取、成果输出与更新等功能。同时为…...

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版
Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…...

day55 最长递增子序列 最长连续递增子序列 最长重复子数组
题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素) 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i] 表示以nums[i…...

使用Springboot配置生产者、消费者RabbitMQ?
生产者服务 1、引入依赖以及配置rabbitmq 此时我们通过使用springboot来快速搭建一个生产者服务 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> applica…...
代码随想录算法训练营第46天|139.单词拆分、多重背包问题
139.单词拆分 题目链接:单词拆分 题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意:**不要求字典中出现的单词全部都使用,并且字典中的单词…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...

【见合八方平面波导外腔激光器专题系列】用于干涉光纤传感的低噪声平面波导外腔激光器2
----翻译自Mazin Alalus等人的文章 摘要 1550 nm DWDM 平面波导外腔激光器具有低相位/频率噪声、窄线宽和低 RIN 等特点。该腔体包括一个半导体增益芯片和一个带布拉格光栅的平面光波电路波导,采用 14 引脚蝶形封装。这种平面波导外腔激光器设计用于在振动和恶劣的…...