2020年4月

  SFP、SFP+、SFP28、QSFP+和QSFP28是不同的光收发器类型。它们都是可热插拔的网络接口模块,用于连接网络交换机和其他网络设备(如服务器或媒体转换器)进行数据传输。那么,在面对这些不同类型的模块时,比如SFP vs SFP+, SFP28 vs SFP+, QSFP vs QSFP28,它们之间有什么区别呢?你可能常常会听到这样的问题:QSFP28与QSFP+兼容吗?我可以在SFP+端口使用SFP28收发机吗?本文我们就来对这些不同类型的模块做一些介绍,并对这些疑问作出解释。

本文转载自KClouder

Transceiver类型介绍
广义的收发器组合通常包括以下几种类型,客户可以根据特定的使用环境和速度需求来选择合适的类型。
● SFP:广泛的协议和速率(快速以太网、千兆以太网、光纤通道、Sonet/SDH),可在商业或扩展温度环境下运行。
● SFP+:专为10g以太网和10g光纤通道。
● XFP:支持各种10gbps协议(以太网,Sonet/SDH光纤通道)。
● X2: 10g以太网标准在不同的距离。
● SFP28:专为25g以太网。
● QSFP+: 40Gbps 40g以太网和OTN标准接口支持多模和单模光纤。
● QSFP28: 100 Gbps 1000g以太网和OTN标准接口支持多模和单模光纤。

在找出SFP与SFP+, SFP28与SFP+,或QSFP与QSFP28的区别之前,我们有必要先知道SFP, SFP+, SFP28, QSFP和QSFP28是什么。

95941-jxk5ecjkh58.png

SFP

SFP (small form-factor pluggable)是GBIC (Gigabit interface converter)的升级版。其体积仅为GBIC模块的1/2,大大增加了网络设备的端口密度。SFP的数据速率从100mbps到4gbit/s不等。

SFP+

SFP+ (small form-factor pluggable plus)是SFP的增强版。它支持8Gbit/s光纤通道,10千兆以太网和光传输网络标准OTU2。SFP+还引入了直接连接来连接两个SFP+端口,而不需要额外的光纤收发器,包括DAC(直接连接电缆)和AOC(主动光缆),这是两个相邻网络交换机之间的短距离直接连接的非常出色的解决方案。

SFP28

SFP28 (small form-factor pluggable 28)是SFP+的一个增强版本。SFP28具有与SFP+相同的常见形式,但在单车道上支持25Gb/s。SFP28提供了一种新的网络升级方式:10G-25G-40G-100G,这是一种节能的解决方案,以满足下一代数据中心网络不断增长的需求。

QSFP+

QSFP+是QSFP (quad small form-factor pluggable)的演化。QSFP可以同时携带4个通道,每个通道可以处理1Gbit/s的数据速率,因此得名Quad SFP。与QSFP不同,QSFP+支持4x 10 Gbit/s通道。这4个通道可以合并成一个40千兆以太网链路。QSFP+收发器可以取代4个标准的SFP+收发器,从而比传统的SFP+产品具有更高的端口密度和整体系统成本节约。

QSFP28

QSFP28 (quad small form-factor pluggable 28)适用于100G的应用程序。它提供了4个高速差分信号通道,数据速率从25Gbps到可能的40 Gbps不等,最后满足100 Gbps以太网(4×25Gbps)和100 Gbps无限带宽增强数据速率(EDR)的要求。请注意,QSFP28可以实现4x25G和2x50G的叉分连接,也可以实现1x100G的连接,具体取决于所使用的收发器类型。

比较SFP vs SFP+ vs SFP28 vs QSFP+ vs QSFP28

在搞清楚SFP/SFP+/SFP28/QSFP+/QSFP28是什么之后,下面我们来详细比较SFP与SFP+, SFP28与SFP+,QSFP与QSFP28, SFP28与QSFP28。

SFP vs SFP+: 相同的尺寸,不同的速度和兼容性

SFP和SFP+收发器,两者在大小和外观上几乎相同。这使得设备制造商可以重用现有的SFP物理设计,用于带有SFP+端口的网络交换机。至于区别,很明显的一点是他们支持不同的传输速度,SFP高达4Gbit/s,而SFP+是10Gbit/s。此外,它们符合不同的规格。SFP基于SFF-8472协议,SFP+符合SFF-8431和SFF-8432。在SFP与SFP+的兼容性方面,SFP+端口通常接受SFP光学,但速度降低了1 Gbit/s。SFP+收发机不能插入SFP端口,否则会损坏产品或端口。

SFP28 vs SFP+: 我可以在SFP+端口中使用SFP28收发器吗?

答案是肯定的。从上面可以看出,SFP28是SFP+的升级版本,SFP28已经升级到每个lane处理25Gbit/s。它们使用相同的形状因子,并且SFP28和SFP+连接器的pinouts是匹配兼容的。所以SFP28将与SFP+光学系统一起工作,但是速度会降低10Gbit/s。如果SFP+模块的SFP28端口可以设置为10G传输,则SFP+模块可以很好地与网络交换机上的SFP28端口配合使用,否则SFP+模块无法工作。在铜缆方面,与SFP+版本相比,SFP28铜缆具有更大的带宽和更低的损耗。

SFP28 vs QSFP28: 根据不同的原则工作

虽然它们的名字中有一个数字“28”,但是SFP28和QSFP28收发器实际上采用了不同的尺寸和工作原理。SFP28只支持一个25Gbit/s的信道,而QSFP28支持4个独立的25Gbit/s的信道。它们都可以用于100G网络,但是SFP28是以QSFP28的形式应用于SFP28的breakout电缆。下面显示了100G QSFP28到4xSFP28 DAC的直接连接。

87026-jngplz6bhsb.png

QSFP+ vs QSFP28: 不同的速度有不同的用途

QSFP+和QSFP28收发器集成了4个发射和4个接收通道,大小相同。此外,QSFP+和QSFP28的产品系列都包括收发模块和DAC/AOC电缆,但速度不同。QSFP+模块支持1x40gbit/s, QSFP+ DAC/AOC电缆支持4x10Gbit/s。QSFP28模块可以传输100 Gbit/s的数据,QSFP28 DAC/AOC电缆可以运行在4x25Gbit/s或2x 50 Gbit/s。请注意,通常QSFP28模块不能突破成10G链接。但是在QSFP28端口中插入QSFP+模块是另一种情况,如果开关支持(如何在QSFP28 100G端口上实现4x10G模式,请访问QSFP28 100G端口播放40G,25G和10G)。在这种情况下,QSFP28可以像QSFP+收发模块一样突破4x10G。

总结:

SFP与SFP+、SFP28与SFP+、QSFP+与QSFP28在不同类型的收发机上的差异在本文中都有明确的阐述。尽管其中一些共享相同的设计,但它们是为不同的数据速率而设计的。从比较中可以看出,光收发器发展的主要驱动力是需要用较小的形状(form-factor)获得更高的带宽速率。例如,在相同的形状(form-factor)中,QSFP28比QSFP+提供更多的带宽。

82161-2oz5jc927l8.png

  我们都知道在不同的国家或地区会使用许多不同的插头和插座,当然这里也包括分散在世界各地的数据中心。世界上使用的标准不止一种,不同的国家可能使用不同的电源线类型,不同的插头和连接器,特别是插头类型。这里我们就来对各种类型及标准的电源插头和插座做一个概况介绍。

服务器是一组庞大的管理网络资源的计算机群,需要电源供电才能正常工作,因此,服务器电源线是连接电源分配器和服务器的基本配件。不同国家的服务器电源线在工作电压和接头类型上都有所不同,所以,要想弄清楚一个服务器或系统需要什么样的服务器电源线,首先应该了解该服务器或系统属于哪个国家或地区、该服务
器或系统的型号以及电源的电压和电流。

本文转载自KClouder

79025-fiut3dziv4o.png

International Standards IEC 60320
IEC 60320是一套标准,规定电源线器具的最高电压为250伏。尽管各国电源线的类型和标准不同,但IEC 60320被公认为世界上大多数国家使用的国际标准。“C”代表IEC 60320制造的连接器的代码标准。针对电流、电压和温度的不同组合,指定了不同类型的连接器。

43209-adwjwoyrj59.png

在这些连接器类型中,C13、C15和C19是数据中心中最常用的。详情见下表:

72741-zrsu7nquqae.png

IEC 60320电源线的插头采用偶数,配套插座采用奇数,通常公器具进口比对应母电缆接头的片高1。因此最常用的电源线类型是C14到C13和C20到C19。其他常见的电源线类型还包括C14到C15和C20到C15。

03914-gnrpj9eydm9.png

不同国家有不同的标准
尽管IEC 60320标准被世界上大多数国家所采用,但实际上它主要针对的是连接器类型(C13、C15、C19)。对于插头类型,各国的情况各不相同。

北美:NEMA 5-15P (B型)
大多数北美国家和一些遵循NEMA标准的国家通常采用NEMA标准。在NEMA 5-15P插头是最广泛使用的插座。他们是三线电路(热,中性和接地),额定在15a在250v,虽然他们通常携带110v。

49397-855j5zk55nt.png

NEMA 5-15P到NEMA 5-15R电源线是最常见的类型。NEMA 5-15P代表插头,NEMA 5-15R代表插座。使用NEMA 5-15插头的其他常用电源线类型包括NEMA 5-15P到C13和NEMA 5-15P到C15。

29531-qihw65hus3.png

欧洲:CEE 7/7 (E类,F类)
CEE 7/7现在是许多欧洲国家事实上的插头标准,在一些遵循CENELEC标准的国家也是如此。没有使用CEE7/7的欧洲国家有丹麦(AFSNIT 107-2-D1)、爱尔兰、意大利(CEI 23-50)、马耳他(BS 1363)、塞浦路斯(BS 1363)、直布罗陀(BS 1363)和瑞士(SEV 1011)。采用CEE 7/7插头的电源线有CEE 7/7至C13、CEE 7/7至C15、CEE 7/7至C19。

05390-hcxa6dusvii.png

中国:GB2099.1/GB1002.1
中国标准插头(三扁)按GB 2099-1,GB1002-1标准执行,接受CCC认证,插头为扁三角类似澳标插头,电气参数有10A和16A之分,中国要求插头,连接器,耦合器和电缆需要强制接受中国电工委委员会批准合格的电气设备CCC标志认证。

90219-9epr4a7a6rp.png

其他标准:JIS c8303, AS/NZS 3112等
很多国家都有自己的插头标准。如澳洲标准AS/NZS 3112 (Type I)、巴西标准NBR 14136、日本标准JIS C 8303 (Type A, B)等。但一个常见的问题是,它们都可能采用IEC 60320连接器标准。

67418-3xom9l7086s.png

  之前写过两篇Horizon Linux虚拟桌面的文章

1,Horizon系列之安装配置CentOS7虚拟桌面

2,Horizon系列之安装配置Ubuntu18虚拟桌面

  第一篇是基于winbind 使用smb加域进行域用户验证,第二篇是通过开源软件PBISO来加域。这两种模式都需要虚拟机加域,如果桌面多,则域的维护工作较重,今天就基于一种轻量级的目录访问协议LDAP来做域用户的验证,它的原理很简单,使用Linux系统内置的系统安全服务守护进程 (System Security Services Daemon, SSSD)通过LDAP和域控通信。通过只读方式,读取域用户,来实现Linux桌面用户的管理和登录,且虚拟机不用加域,只需要虚拟机和域控通过ldap协议通信即可,易维护。如果对安全系数要求较高,还可以建立只读普通域用户,授权对特定的OU为只读模式,但是前期配置步骤稍微有点多,此文主要以如何让Linux7和域控通过ldap协议通信,并且实现Linux下常用的sudo权限。

[scode type="blue"]
软件版本:Centos7.6 horizon 7.9,horizon从7.2开始支持SSSD和LDAP验证
域名:lzuvdi.local
域控制器:ad.lzuvdi.local
[/scode]

虚拟机须禁用ipv6,禁用virbr0,禁用NMtool,并配置默认搜索域和DNS,具体操作看这里Horizon系列之安装配置CentOS7虚拟桌面

一,准备CA证书

安装域证书看这里,Horizon系列之替换各组件自签名SSL证书

1,导出CA证书

打开证书颁发机构,右键选择域证书,点击所有任务,单击备份CA,下一步

60107-9cf9mc7z516.png

勾选私钥和CA证书和证书数据库和证书数据库日志,选择保存位置,下一步

01991-ilkoq8xdbk.png

密码选项留空,设置密码也可以,但是必须要记住,后面要用到。下一步,单击完成备份。

05023-kpm8omd83s.png

2,安装SSSD和LDAP组件

yum install -y sssd nss-pam-ldapd sssd-ad sssd-tools

94349-wxymgiuur1h.png

3,生成所需文件和目录

authconfig --enablesssd --enablesssdauth --enableldap --enableldapauth --disableforcelegacy --enableldaptls --disablekrb5 --ldapserver ldap://ad.lzuvdi.local --ldapbasedn "dc=lzuvdi,dc=local" --enablemkhomedir --update

然后

systemctl restart sssd

4,把第1步备份的CA证书上传到/etc/openldap/cacerts

43741-jwfog4bi52.png

5,转换证书为LDAP可识别的证书格式

openssl pkcs12 -in lzuvdi-AD-CA.p12 -out ad.pem

第一次提示输入备份时设置的密码,我备份CA时密码为空,则这里也留空。第二次提示设置一个PEM证书的密码,输入即可。

12839-e4viebz4ws.png

75778-6nqn0dt5gz7.png

二,配置LDAPS

1,打开ldp.exe

83075-0iphj7o0oxnm.png

2,点击左上角连接,单击连接,端口输入636,勾选SSL,单击确定。

50979-25tejguai8p.png

此时左上角的链接已变为ldaps

3,点击左上角连接,单击绑定,勾选作为当前已登录用户绑定,单击确定。

37841-zcmyce6sbjo.png

4,点击浏览-搜索,在DN一栏输入域控DC和OU信息,进行查询,如我建立的VDI_Users

67708-omviakvwz8p.png

5,正常查询到我建立的65个用户

51135-tlwwawmswk.png

此时,说明LDAPS正常工作

[scode type="blue"]下面关键内容仅对打赏用户开放,之前通过微信打赏的用户,微信联系我获取密码,谢谢![/scode]

  这几天在做horizon桌面,凭着之前的经历,一路下一步,风雨无阻。哼着小曲在view管理界面添加vc后再添加composer,继续添加域,报错如下:

60432-eiup77u6wua.png

按照之前经验,先跳过,添加完vc 后再添加composer,结果还是一样的报错。尝试其他方法无果,包括尝试域用户格式,lzuvdi\administratoradministrator@lzuvdi.com,想到的想不到的都测试过,不行!最后我把域控制器重新安装一遍,之前的域名是lzuvdi.cn,现在改为了lzuvdi.local,还是报错如下,

91487-v8o7dpljo0b.png

这是我之前从来没遇到过的境地,让我陷入了沉思,求助前辈,他说你试试解决证书问题,一顿操作之后,一步到位,成功添加。

02570-lrk27ghc7fk.png

如何更换horizon 组件证书看这里 Horizon系列之替换各组件自签名SSL证书

#!/bin/bash
oskernel=`uname -r | awk -F"-" '{print $1}'`
osrealease=`cat /etc/redhat-release`
echo -e "\e[94m-------------------------------------------------------------------\e[0m"
echo -e "\e[94m当前操作系统为$osrealease\e[0m"
if [ "$oskernel" = "2.6.32" ]; then
echo -e "\e[94m内核版本为2.6.32系列\e[0m"
elif [ "$oskernel" = "3.10.0" ]; then
echo -e "\e[94m内核版本为3.10.0系列\e[0m"
else
echo -e "\e[94m此脚本不支持当前操作系统!\e[0m"
exit
fi
multipath=`multipath -l |grep dm- |grep [0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z] -o`
if [[ "$multipath" == "" ]];then
echo -e "\e[94m此脚本不支持当前环境!\e[0m"
exit
fi
rm -f /etc/udev/rules.d/99-oracle-asmdevices.rules
if [ "$oskernel" = "2.6.32" ]; then
for dev in $multipath;
do
alias=`multipath -l |grep $dev |awk -F " " '{print$1}'`
echo "KERNEL==\"dm-*\",SUBSYSTEM==\"block\",PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"$dev\",SYMLINK+=\"asm$alias\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660"\" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
/sbin/udevadm trigger
elif [ "$oskernel" = "3.10.0" ]; then
for dev in $multipath;
do
alias=`multipath -l |grep $dev |awk -F " " '{print$1}'`
echo "KERNEL==\"dm-*\",SUBSYSTEM==\"block\",PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"$dev\",SYMLINK+=\"asm$alias\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660"\" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
/usr/sbin/udevadm trigger
else
echo -e "\e[94m此脚本不支持当前操作系统!\e[0m"
exit
fi
if [ "$oskernel" = "2.6.32" ]; then
service multipathd restart > /dev/null 2>&1
sleep 2
elif [ "$oskernel" = "3.10.0" ]; then
systemctl restart multipathd > /dev/null 2>&1
sleep 2
fi
ls -l /dev/dm-*
ls -l /dev/asm*

方法 1

编辑文件/etc/sysctl.conf,

vi /etc/sysctl.conf

添加下面的行:

net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1

如果为特定的网卡禁止IPv6,比如,对于enp0s3,添加下面的行。

net.ipv6.conf.enp0s3.disable_ipv6 =1

保存并退出文件。
执行下面的命令来使设置生效。

sysctl -p

方法 2

要在运行的系统中禁止IPv6,依次输入下面的命令:

echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 >/proc/sys/net/ipv6/conf/default/disable_ipv6

或者

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

就是这样。现在IPv6已经禁止了。
重启生效

reboot
netstat -lnpt

只需更改mac地址ATTR{address}及网卡名称NAME即可

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:fc:f1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:0f:fa", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:c5:d5", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:66:bf", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

1,定义用户或者用户组

User_Alias NETADMIN = cheng401,chengjianjun,lilongjie,ruili,renc,lab320,lzuprogram,yaozj,kzhan,radio401,sally,ylu,rjsxs,zg501,wanyi,zhgmao,lixiyun,test

2,定义用户可以执行和不能执行的命令

Cmnd_Alias USERADMINCMNDS = /usr/sbin/*,/sbin/*,/usr/bin/*,!/usr/bin/passwd,!/usr/sbin/visudo,!/usr/sbin/useradd,!/usr/sbin/userdel,!/usr/bin/passwd root --stdin

3,将上述内容组合,使其有sudo权限

NETADMIN ALL=(root) USERADMINCMNDS

永久配置,打开/etc/iscsi/iscsid.conf文件,找到如下三项并取消注释:

node.session.auth.authmethod = CHAP   //开启CHAP认证
node.session.auth.username = admint    //配置账号
node.session.auth.password = hech@123  //密码

测试可以用下面的命令

1,发现存储

iscsiadm -m discovery -t st -p 192.168.200.200

2,添加验证信息

1,先开启验证
iscsiadm -m node -o update -p 192.168.200.200 -n node.session.auth.authmethod -v CHAP
2,再添加用户
iscsiadm -m node -o update -p 192.168.200.200 -n node.session.auth.username -v admin
3,添加密码
iscsiadm -m node -o update -p 192.168.200.200 -n node.session.auth.password -v hech@123

或者

1,先开启验证
iscsiadm -m node -T iqn.1992-08.com.netapp:sn.418df88c380811eaa48f00a0b8f70f5c:vs.3 -o update --name node.session.auth.authmethod --value=CHAP
2,再添加用户
iscsiadm -m node -T iqn.1992-08.com.netapp:sn.418df88c380811eaa48f00a0b8f70f5c:vs.3 --op update --name node.session.auth.username --value=admin
3,添加密码
iscsiadm -m node -T iqn.1992-08.com.netapp:sn.418df88c380811eaa48f00a0b8f70f5c:vs.3 --op update --name node.session.auth.password --value=hech@123

3,登录存储

iscsiadm -m node -p 192.168.200.200 -l

双向认证

双向认证就是在Initiator端和target端都进行认证。Initiator 认证:在initiator尝试连接到一个target的时候,initator需要提供一个用户名和密码给target供target进行认证。下面我们称这个用户名密码为incoming账号,即:incoming账号是initiator端提供给target端,供target端认证的账号。target 认证:在initiator尝试连接到一个target的时候,target需要提供一个用户名和密码给initiator供initiator进行认证。与之对应的是outcoming账号,即:outcoming账号是target端提供给initiator端,供initiator认证的账号。双向认证的配置如下:

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = username
node.session.auth.password = password
# To set a CHAP username and password for target(s)
# authentication by the initiator, uncomment the following lines:
node.session.auth.username_in = username_in
node.session.auth.password_in = password_in