linux光口怎么接收trunk

linux光口怎么接收trunk,第1张

linux光口接收trunk是对应一个子接口在每个子接口上设置一个ip地址。

首先需要让内核支持802.1Q,然后再用vconfig去设置你想要的结果。

在linux下配置trunk的主要作用是服务器与交换机相连时,一个网卡上配置多个IP/VLANID来通信。这时就要用到trunk了,首先要

确认Linux系统内核是否已经支持VLAN功能:物理网卡、子网卡、虚拟VLAN网卡的关系:物理网卡这里指的是服务器上实际的网

络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。子网卡:子网卡在这

里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理

网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当

所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网

络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入

不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们

的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是et

h0.1、eth1.2这种名字。

Neutron 默认使用 ML2 作为 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin

计算节点和控制节点都需要在各自的 neutron.conf 中配置 core_plugin

然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechanism_drivers

mechanism_drivers 可以同时指定多个。这里只指定了一个。

查看 linuxbridge 进程

控制节点:

计算节点:

在 Linux Bridge 环境中,一个数据包从 Instance 发送到物理网卡会经过下面几个类型的设备:

对于每个 local network,ML2 linux-bridge 会创建一个 bridge,Instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 Instance 会连接到相同的 bridge,这样 Instance 之间就可以通讯了。

因为 local network 没有与物理网卡相连,所以 Instance 无法与宿主机之外的网络通信。

同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间是不通的。

ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini

type_drivers ML2 加载网络类型。

tenant_network_types 普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络。

tenant_network_types = vlan, local 意思是当没有 vlan 可创建时,使用 local。

检测 Neutron Agent 是否正常 管理员 -->系统 -->系统信息 -->网络代理

从用户管理创建网络

创建网络 项目 -->网络 -->网络

填写网络名称

填写子网信息。 网关 IP 可以不用填写。默认为子网地址的第一个 IP。即:172.16.10.1

添加子网 IP 范围。

点击网络名称,进去相信信息,可以看到子网和端口信息等。

可以看到在端口中已经创建了一个 port,名为 “(c45b69e6-04ba)”,IP 为 172.16.10.2。连接设备为 "network:dhcp"。

打开控制节点终端,使用 brctl show 查看 linux bridge 的状态。

可以看到 bridge 设备 brqd2fd4378-9e 和 tap 设备 tapc45b69e6-04

创建 Instance 并选择刚刚创建的网络。

创建 Instance 成功后可以发现已经分配 IP 地址。

在底层中 Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 test。如下图

点进去可以看到详情

在宿主机上执行 brctl show 可以查看 bridge 的配置。

可以看到 bridge brqd2fd4378-9e 上连接了一个新的 tap 设备。

查看 Instance 信息。使用 virsh list 查看 Instance 运行中的列表。

使用 virsh edit 1 查看配置信息。

配置信息省略很多。重要的放在上面。

<mac address='fa:16:3e:19:e1:57'/> 是 Instance 网卡的 MAC 地址

<target dev='tapb337d11f-54'/> 是 Instance 虚拟网卡信息

ping test1 的 IP 地址发现是可以 ping 通。

查看 brctl show

发现 brqd2fd4378-9e 中又计入进来一个 VIF,因为两个 VIF 挂载在同一个 Linux Bridge 上,所以可以通讯。

结构如下:

如果新分的 Instance 在计算节点中。不在控制节点。他们之间将不在互通。

因为 DHCP agent 在控制节点上运行,test2 在计算节点的 local 网络上,两者位于不同物理节点。由于 local 网络的流量只能局限在本节点之内,发送的请求无法到达计算节点。

上图 物理网卡 eth1 桥接到 brqXXXX,为 Instance 提供 flat 网络。

下图 创建多个 flat Network,就要准备多个物理机网卡。

在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 参数为 flat

:这里是指定普通用户使用 flat。因为 flat 网络与物理网卡一一对应。一般情况下租户网络不采用 flat。

flat_networks 定义一个 flat 网络,label 为 “default”

通过 physical_interface_mappings 指名 default 对应的物理网卡为 ens35

例如:对于 label 为 “default” 的 flat network,节点 A 可能使用 ens35,配置为:

而 B 节点则可以使用 ens33,配置为:

创建 flat 网络

绑定子网

查看 控制节点网络状态

Neutron 自动新建了 flat_net 对应的网桥 brq9e3013c8-93,以及 dhcp 的 tap 设备 tap50802894-1a。

此时 tap50802894-1a 和物理网卡 ens35 都已经连接到网桥 brq9e3013c8-93 上。

可以看到 Instance 的 tap 设备 tapc1241c3f-cb 已经连接到网桥

配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver

dnsmasq 是一个提供 DHCP 和 DNS 服务的开源软件。

在实现环境中使用 ps 命令可以查看到 dnsmasq 进程。

DHCP agent 会为每个 network 创建一个目录 /opt/stack/data/neutron/dhcp/xxxx 用于存放该 network 的 dnsmasq 配置文件。

在二层网络上,VLAN 可以将一个交换机分割成几个独立的虚拟交换机。

类似,在三层网络上,Linux Network Namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。

每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device等

Neutron 通过 dnsmasq 为每个 Network 提供单独的 DHCP 和路由服务。

使用 ip 查看所有 namespcae

使用 neutron 查看 net-list

查看某个 namespace 的详细配置

3 个 Instance 通过 tap 设备连接到名为 “vrqXXXX” 的 Linux Bridge。

在物理网卡 eth1 上创建 eth1.100 的 valn interface,eth1.100 连接到 brqXXXX。

这样,Instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。

如果在创建个 network vlan101,eth1 上就会相应的创建多个 vlan interface eht1.101 并连接新的 Linux Bridge “brqYYYY”。

配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 tenant_network_types 的值为 vlan

配置 vlan 的范围

意思是:配置定义了 lable 为 “default” 的 valn network,valn id 的范围是 3001~4000。这里配置的是普通用户使用的范围。

admin 可以使用 1~4096 的 valn network

再次指定 vlan network 与物理网卡的对应关系

配置子网

查看系统网桥

这里可以看到:

vlan100 对应的网桥为 brq2b85ebb9-a。

vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默认网卡名 ens 开始的。)

DHCP 的 tap 设备是 tapf85d61d8-c3。

在 计算节点查看 网桥信息

可以发现创建的 Instance 已经连接到 vlan100 对应的网桥 brq2b85ebb9-a 上。因为计算节点没有 DHCP 服务所以没有相应的 tap 设备。

另外 网桥的名字与控制节点是一样的,都是 brq2b85ebb9-a6,表示是在同一个 network 上。

下图是我创建 VLAN 后 两台 Instance 分别在控制节点和计算机点的网络图

此时两台 Instance 在同一 valn100 下。相互之间是可以 ping 通的。

如果在创建一个 vlan101。如果两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

如下图两个 vlan

两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

因为 vlan 在二层是隔离的。如果想要互通,只能在三层通过路由转发。

一、什么是bonding 多块网卡绑在一起,作为一个网卡用,实现负载均衡和提高带宽,linux双网卡绑定一个IP地址,实质工作就是使用两块网卡虚拟为一块,使用同一个IP地址,是我们能够得到更好的更快的服务。 二、配置过程 配置很简单,一共四个步骤: 实验的 *** 作系统是Redhat Linux Enterprise 3.0 绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。 1.编辑虚拟网络接口配置文件,指定网卡IP 代码如下: vi /etc/sysconfig/ network-scripts/ ifcfg-bond0 p[[emailprotected] root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0 将第一行改成 DEVICE=bond0 代码如下: # cat ifcfg-bond0 pDEVICE=bond0 pBOOTPROTO=static pIPADDR=172.31.0.13 pNETMASK=255.255.252.0 pBROADCAST=172.31.3.254 pONBOOT=yes pTYPE=Ethernet 这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。 代码如下: [[emailprotected] network-scripts]# cat ifcfg-eth0 pDEVICE=eth0 pONBOOT=yes pBOOTPROTO=dhcp p[[emailprotected] network-scripts]# cat ifcfg-eth1 pDEVICE=eth0 pONBOOT=yes pBOOTPROTO=dhcp 3 # vi /etc/modules.conf 编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0 加入下列两行 代码如下: alias bond0 bonding poptions bond0 miimon=100 mode=1 说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。 mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。 mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份. bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用 4 # vi /etc/rc.d/rc.local 加入两行 代码如下: ifenslave bond0 eth0 eth1 proute add -net 172.31.3.254 netmask 255.255.255.0 bond0 到这时已经配置完毕重新启动机器. 重启会看见以下信息就表示配置成功了 ................ Bringing up interface bond0 OK Bringing up interface eth0 OK Bringing up interface eth1 OK Bonding的工作模式 Linux Bonding默认使用轮转策略。 基本类别是主备模式与负载均衡两种模式: balance-rr (mode=0) 轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力。 active-backup(mode=1) 活动-备份(主备)策略:在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见。在bongding的2.6.2及其以后的版本中,主备模式下发生一次故障迁移时,bonding将在新激活的slave上会送一个或者多个gratuitous ARP.bonding的主salve接口上以及配置在接口上的所有VLAN接口都会发送gratuitous ARP,只要这些接口上配置了至少一个IP地址。VLAN接口上发送的的gratuitous ARP将会附上适当的VLAN id。本模式提供容错能力,primary option,documented below会影响本模式的行为。 balance-xor(mode=2) XOR策略:基于所选择的传送hash策略。 本模式提供负载均衡和容错的能力。 broadcast(mode=3) 广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。 802.3ad(mode=4) IEEE 802.3ad 动态链路聚合。创建共享相同的速率和双工模式的聚合组。能根据802.3ad规范利用所有的slave来建立聚合链路。Salve的出站选择取决于传输的hash策略,默认策略是简单的XOR策略,而hash策略则可以通xmit_hash_policy选项加以改变。需要注意的是:不是所有的传输策略都与802.3ad兼容,尤其是802.3ad标准的43.2.4章节中关于 packet mis-ordering要求的地方。不同个体的实现往往出现很大的不兼容。 先决条件: 1. 每个slave的基本驱动支持Ehtool获取速率和双工状态。 2.交换机支持IEEE 802.3ad动态链路聚合。大多数的交换机都需要使用某种配置方式来启用802.3ad模式。 balance-tlb(mode=5) 自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。 先决条件: 每个slave的基本驱动支持Ehtool获取速率状态。 balance-alb(mode=6) 自适应负载均衡:包括balance-tlb(模式5)以及用于IPV4流量的接收负载均衡,并且不需要特殊的交换机支持。接收负载均衡通过ARP协商实现。bonding的驱动拦截本机发出的ARP Replies(ARP回应报文),并且用bond的某一个slave的硬件地址改写ARP报文的源地址,使得本服务器对不同的设备使用不同的硬件地址。本服务器建立的连接的接收流量也是负载均衡的。当本机发送ARP Request时,bonding驱动通过ARP报文复制并保存节点的IP信息。当从其他节点接收到ARP Reply,bonding驱动获取节点的硬件地址并且会回应一个包含绑定好的slave的硬件地址的ARP Reply给发送的节点。用ARP协商的负载均衡的有一个问题是每次用bond的硬件地址广播ARP报文,那么其他节点发送的数据全部集中在一个slave上,处理ARP更新给其他所有节点的时候,每个节点会重新学习硬件地址,导致流量重新分配。当新加入一个slave或者一个非激活的slave重新激活的时候也会导致接收流量重新分配。接收流量负载是串行(轮转)的分配在bond的一组速率最高的slave上。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7302811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存