开始新对话

未解决

此帖子已超过 5 年

507259

2014年8月10日 18:00

网络基本功系列:细说网络那些事儿(3月26日更新)

网络基本功(一):细说网络传输

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

介绍

常言道:欲练神功,必先练好基本功。之前做了一个关于IP路由,默认网关和掩码的问答贴,做完这个帖子觉得如果对网络知识点做一个系统的阐述,应该会很有帮助。


本系列文章着重于讲解网络管理实际应用中常常涉及的重要知识点,尽量以实用为主。准备写的几个章节暂时有(可能会有增减):



更多信息


首先来看一个例子:


示例:网络服务器向客户端传送数据的过程:

在详细阐述网络传输过程之前,先来看一个最常见的例子,下图显示了一个网络服务器向客户端传送数据的完整过程:

image002.jpg

     1.     需要传送的数据是网络服务器的HTML页面。

     2.     应用协议HTTP报文头添加到HTML数据之前。报文头信息包括:服务器所使用的HTTP版本,以及表明它包含发给网络客户端信息的状态编码。

     3.     HTTP应用层协议将HTML格式的网页数据发送给传输层。TCP传输层用于管理网络服务器和客户端之间的会话。

     4.     IP信息添加到TCP信息之前。IP指定适当的源和目的IP地址。这些信息就构成了IP报文。

     5.     以太网协议添加到IP报文的两端之后,就形成了数据链路帧。上述帧发送至通向网络客户端的路径上的最近一个路由器。路由器移除以太网信息,观察IP报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器。每一个路由器在转发之前都移除并添加新的数据链路层信息。

     6.     数据通过互联网络传输,互联网络包含媒介和中间设备。

     7.     客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。首先处理并移除以太网信息,之后是IP协议信息,接下来TCP信息,最后是HTTP信息。

     8.     之后,将网页信息传递给客户端网页浏览器软件。

数据封装:

消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制地址信息,以使它能够从发送方移动到接收方。

消息大小

理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流都会丢失需要全部重传。因此更好的方法是将数据流分割segmentation)为较小的,便于管理的片段,能够带来两点好处:

·         发送较小片段,网络上同时可有多个会话交错进行。这种在网络上将不同会话片段交错进行的过程称为多路传输(multiplexing

·         分割可提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同路径,如果一条路径被堵塞或断开,其余消息可从替换路径到达目的地址。如果部分消息到不了目的地址,那只需重传丢失部分。

通过对片段打上标签的方式来保证顺序以及在接收时重组。

image003.jpg

协议数据单元(Protocol Data Unit, PDU

应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的过程。

数据片段在各层网络结构中采用的形式就称为协议数据单元(PDU。封装过程中,下一层对从上一层收到的PDU进行封装。在处理的每一个阶段PDU都有不同的名字来反应它的功能。

image004.jpg

PDU按照TCP/IP协议的命名规范:

·         数据(Data:应用层PDU的常用术语

·         分段(Segment):传输层PDU

·         帧(Frame):网络层PDU

·         比特(Bits):在介质上物理传输数据所使用的PDU

封装

封装是指在传输之前为数据添加额外的协议头信息的过程。在绝大多数数据通信过程中,源数据在传输前都会封装以数层协议。在网络上发送消息时,主机上的协议栈从上至下进行操作。

以网络服务器为例,HTTP应用层协议发送HTML格式网页数据到传输层,应用层数据被分成TCP分段。各TCP分段被打上标签,称为头(header),表明接收方哪一个进程应当接收此消息。同时也包含使得接收方能够按照原有的格式来重组数据的信息。

传输层将网页HTML数据封装成分段并发送至网络层,执行IP层协议。整个TCP分段封装成IP报文,也就是再添上IP头标签。IP头包括源和目的IP地址,以及发送报文到目的地址所必须的信息。

之后,IP报文发送到接入层,封装以帧头和帧尾。每个帧头都包含源和目的物理地址。物理地址唯一指定了本地网络上的设备。帧尾包含差错校正信息。最后,由服务器网卡将比特编码传输给介质。   

解封装

接收主机以相反的方式进行操作称为解封装。解封装是接收设备移除一层或多层协议头的过程。数据在协议栈中向上移动直到终端应用层伴随着解封装。

访问本地资源:

访问本地网络资源需要两种类型的地址:网络层地址和数据链路层地址。网络层和数据链路层负责将数据从发送设备传输至接收设备。两层协议都有源和目的地址,但两种地址的目的不同

示例:客户端PC1FTP在同一IP网络的通信

image005.jpg

网络地址

网络层地址或IP地址包含两个部分:网络前缀和主机。路由器使用网络前缀部分将报文转发给适当的网络。最后一个路由器使用主机部分将报文发送给目标设备。同一本地网络中,网络前缀部分是相同的,只有主机设备地址部分不同。

IP地址:发送设备,即客户端PC1IP地址:192.168.1.110

目的IP地址:接收设备,即FTP服务器:192.168.1.9

数据链路地址

数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至另一个网络接口。以太网LAN和无线网LAN是两种不同物理介质的网络示例,分别有自己的数据链路协议。

IP报文的发送方和接收方位于同一网络,数据链路帧直接发送到接收设备。以太网上数据链路地址就是以太网MAC地址。MAC地址是物理植入网卡的48比特地址。

MAC地址:发送IP报文的PC1以太网卡MAC地址,AA-AA-AA-AA-AA-AA

目的MAC地址:当发送设备与接收设备位于同一网络,即为接收设备的数据链路地址。本例中,FTP MAC地址:CC-CC-CC-CC-CC-CC

源和目的MAC地址添加到以太网帧中。

image006.jpg

MACIP地址

发送方必须知道接收方的物理和逻辑地址。发送方主机能够以多种方式学习到接收方的IP地址:比如域名系统(Domain Name System, DNS),或通过应用手动输入,如用户指定FTP地址。

以太网MAC地址是怎么识别的呢?发送方主机使用地址解析协议(Address Resolution Protocol, ARP)以检测本地网络的所有MAC地址。如下图所示,发送主机在整个LAN发送ARP请求消息,这是一条广播消息。ARP请求包含目标设备的IP地址,LAN上的每一个设备都会检查该ARP请求,看看是否包含它自身的IP地址。只有符合该IP地址的设备才会发送ARP响应。ARP响应包含ARP请求中IP地址相对应的MAC地址。

image007.jpg

访问远程资源:

默认网关

当主机发送消息到远端网络,必须使用路由器,也称为默认网关。默认网关就是位于发送主机同一网络上的路由器的接口IP地址。有一点很重要:本地网络上的所有主机都能够配置自己的默认网关地址。如果该主机的TCP/IP设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达

如下图所示,LAN上的主机PC 1使用IP地址为192.168.1.1R1作为默认网关,如果PDU的目的地址位于另一个网络,则主机将PDU发送至路由器上的默认网关。

image008.jpg

与远端网络设备通讯

下图显示了客户端主机PC 1与远端IP网络服务器进行通讯的网络层地址与数据链路层地址:

image009.jpg

网络地址

当报文的发送方与接收方位于不同网络,源和目的IP地址将会代表不同网络上的主机

IP地址:发送设备即客户端主机PC 1IP地址:192.168.1.110

目的IP地址:接收设备即网络服务器的IP地址:172.16.1.99

数据链路地址

当报文的发送方与接收方位于不同网络,以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。本例中,默认网关是R1R1的接口IP地址与PC 1属于同一网络,因此PC 1能够直接达到路由器。

MAC地址:发送设备即PC 1MAC地址,PC1的以太网接口MAC地址为:AA-AA-AA-AA-AA-AA

目的MAC地址:当报文的发送方与接收方位于不同网络,这一值为路由器或默认网关的以太网MAC地址。本例中,即R1的以太网接口MAC地址,即:11-11-11-11-11-11

IP报文封装成的以太网帧先被传输至R1R1再转发给目的地址即网络服务器。R1可以转发给另一个路由器,如果目的服务器所在网路连接至R1,则直接发送给服务器。

发送设备如何确定路由器的MAC地址?每一个设备通过自己的TCP/IP设置中的默认网关地址得知路由器的IP地址。之后,它通过ARP来得知默认网关的MAC地址,该MAC地址随后添加到帧中。

             

13 消息

2014年8月26日 02:00

嗯,又学到了很多,再次期待你的后续文章

1.2K 消息

2014年8月26日 02:00

在上一条回复中补充一个图,方便理解trunk的作用。

13 消息

2014年8月26日 19:00

这个图很棒,瞬间加深认识!

1.2K 消息

2014年8月31日 17:00

网络基本功(四):细说路由(上)

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

介绍

以太网交换机工作在第二层即数据链路层,用于在同一网络内部转发以太网帧。但是,当源和目的IP地址位于不同网络时,以太网帧必须发送给路由器。路由器负责在不同网络间传输报文,通过路由表来决定最佳转发路径。当主机将报文发送至不同IP地址时,由于主机无法直接与本地网络以外的设备通信,报文被转发至默认网关。默认网关就是数据流从本地网络路由至远端设备的目的地。它通常用来连接本地网与公共网。


更多信息

报文转发过程:

路由器在一个接口接收报文并将它从另一个接口转发出去,这一过程的关键步骤是为输出链路将报文封装在适当的数据链路帧中。路由器主要执行以下三个步骤:

1. 将第二层的帧头和帧尾移除,解析出第三层报文。

2. 检查IP报文的目的IP地址,在路由表中查找最佳路由。

3. 如果路由器找到一条最佳路径,则将三层报文封装到新的二层帧中,并将帧转发到输出端口。

如下图所示:设备有三层IPv4地址,以太网接口有二层数据链路地址。例如PC 1IPv4地址192.168.1.10,示例MAC地址0A-10在报文从原设备传输至目的设备的过程中,三层IP地址不会改变但是,每一跳随着报文在路由器中被解封装和重新封装,二层数据链路地址都会改变。很可能报文被封装成与接收时不同的另一种类型的二层帧。

image002.jpg

发送报文:

PC 1发送报文给PC 2时,首先必须确定目的IPv4地址是否位于同一网络。PC 1通过将自己的IPv4地址与子网掩码做与操作,来判断PC 1所属的网段。接下来,PC 1对目的IPv4地址与PC 1的子网掩码做同样的与操作。如果目的网络地址与PC 1网络相同,则PC 1不使用默认网关,而是在ARP缓存中查找目的IPv4地址的设备MAC地址。如果MAC地址不在缓存中,则PC 1产生一个ARP请求来获取地址并将报文发给目的地址。如果目的网络地址位于另一网络,则PC 1将报文转发至默认网关。

要确定默认网关的MAC地址,PC 1在它的ARP表中查找默认网关的IPv4地址以及相应的MAC地址。如果ARP表中没有默认网关的对应表项,则PC 1发送ARP请求。路由器R1回复ARP响应。之后PC 1将报文转发至默认网关的MAC地址,即路由器R1Fa0/0接口。

转发至下一跳:

R1PC 1接收到以太网帧后执行以下步骤:

1. R1检查目的MAC地址,与接收端口FastEthernet 0/0相匹配,因此,将帧复制到buffer

2. R1识别以太网类型为0x800,意味着以太网帧的数据部分包含IPv4报文。

3. R1解封装该以太网帧。

4. 由于目的IPv4地址与R1直连的任何网络都不相符,R1在路由表中查找包含该目的IPv4地址主机的网络地址。本例中,路由表中有192.168.4.0/24网络的路由。目的IPv4地址为192.168.4.10,即该网络上的主机IPv4地址。

R1找到192.168.4.0/24路由的下一条IPv4地址为192.168.2.2以及输出端口FastEthernet 0/1,这意味着IPv4报文封装到一个新的以太网帧中,目标MAC地址是下一跳路由器的MAC地址。

由于下一个接口是在以太网上,所以R1必须用ARP解析出下一跳IPv4地址的MAC地址。

1. R1ARP cache中查找下一跳IPv4地址192.168.2.2。如果表项不在ARP cache中,R1会从FastEthernet 0/1 接口发送ARP请求,R2会返回ARP响应。R1之后在ARP cache中更新192.168.2.2MAC地址。

2. IPv4报文封装到新的以太网帧中并从R1FastEthernet 0/1 接口转发出去。

到达目的地:

当帧到达R3时执行以下步骤:

1. R3将数据链路帧复制到它的buffer

2. R3解封装该数据链路帧。

3. R3在路由表中查找该目的IPv4地址。R3路由表中有直接连接到该网络的路由。这表示报文可直接发送到目的设备而无需发送至路由器。

由于输出接口是一个直连以太网,所以R3必须用ARP解析出目的IPv4地址的MAC地址。

1. R3在它的ARP cache中查找目的IPv4地址,如果此ARP cache中没有此表项,R3会从FastEthernet 0/0 接口发送ARP请求。PC 2回复ARP响应告知它的MAC地址。R3之后在ARP cache中更新192.168.4.10MAC地址。

2. IPv4报文封装到新的以太网帧中并从R3FastEthernet 0/0 接口发出。

3. PC 2接收到该帧,检查帧的目的MAC地址,与网卡接收端口的MAC地址相匹配,PC 2于是将帧的剩余部分复制到自己的buffer

4. PC 2识别到以太网类型为0x800,也就是帧的数据部分包含IPv4报文。

5. PC 2解封装以太网帧,将IPv4报文传递给操作系统的IPv4进程。

路由表:

路由表存储的信息包括:

直连路径:来自活动路由接口的路径。当接口为活动状态并配置了IP地址时,路由器添加一条直连路径。

远端路径:远端的网络连接到其他路由。通过静态配置或动态路由协议到达该网络。

路由表是存储在RAM中的一份数据文件,用于存储直连以及远端网络的路由信息。路由表中包含网络或下一跳地址的信息。这些信息告知路由器可以通过将报文发送至代表下一跳地址的路由器以最佳路劲到达目的地址。下一跳信息也可以是到下一个目的地的输出接口。

路由表内容:

Cisco IOS路由器可用show IP route命令显示IPv4路由表。路由器还提供一些额外的路由信息,包括路径是怎样学习到的,路径在表中有多长时间,使用哪一接口去到达预定义的目的地。

路由表中的表项可作为以下内容添加:

本地路径接口:当接口配置并激活时添加。

直连接口:当接口配置并激活时添加。

静态路径:当手动配置路径并且输出接口激活时。

动态路由协议:当路由协议动态学习到网络时添加,如EIGRPOSPF

路由表项的来源通过代码来标识,代码表明路径是怎样学习到的。例如,常用代码包括:

L路由器接口地址。当路由器接收到报文时发送至本地接口而无需转发。

C直连网段。

O通过OSPF从另一个路由器动态学习到的网络。

D通过EIGRP从另一个路由器动态学习到的网络。

下图显示了R1的路由表:

image003.jpg

远端网络路由表项:

下图显示了R1到远端网络10.1.1.0的表项:

image004.jpg

Route source:路径是怎样学习到的。

Destination network:远端网络地址。

Administrative distance:路由来源的可信度。较低值表明优先选择。

Metric:是路由算法用以确定到达目的地的最佳路径的计量标准。较低值表明优先选择。

Next hop:转发报文的下一个路由器的IP地址。

Route timestamp:自学习到路径以来过了多少时间。

Outgoing interface:用以转发报文的输出接口。

直连路由表项:

下图显示了R1到直连网络192.168.10.0的路由表项:

image005.jpg

在一个接口状态为up/up并添加到IPv4路由表之前,接口必须:

·         指定有效的IPv4IPv6地址。

·         通过no shutdown命令激活。

·         从另一设备(路由器,交换机,主机等)接收到载体信号。

当接口up之后,该接口的网络作为直连网络添加到路由表中。

1 消息

2014年9月6日 06:00

NMAP可以考虑下?企业中应该用的挺多的。

1.2K 消息

2014年9月8日 17:00

网络基本功(五):细说路由(下)

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

介绍

静态路由是指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。动态路由是指路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由表的过程。是基于某种协议来实现的。本文详细阐述这两者的实现过程。

更多信息

静态路由:

静态路由是指由网络管理员手动配置在路由器上的表项。对于特定的目标地址,以及在小型或稳定的网络环境,手动配置静态路由可以非常成功地应用。通过使用静态路由,网络管理员确定了通向一目标网络的路径。

一个重要的概念是:路由的核心在于下一跳。下一跳是一个特定路由器的角度来看,距离目标地址更近一步的路由器。下图显示了一个中型路由拓扑。从R1的角度来看,R2同时是到达192.168.3.0以及192.168.4.0的下一跳。

image002.jpg

初始状态下,除了已经启动的接口和给定的IP地址以外,什么都没有配置。路由器的路由表只会包含直连路由。每一个路由器只知道它接口相连的两个网络。下表显示了这一时刻的路由表。

image003.png

从上表可以看出,路由器不知道整个网络的情况。例如,Node A连接到Switch 1尝试访问Switch 4Node B。经过主机路由表处理后,A将数据转发至R1的默认网关(192.168.1.254),R1查询自己的路由表并发现没有目标网络的相关信息。于是R1发送ICMP destination unreachable消息。

这个问题怎么解决呢?像这样的小型网络,网络管理员可以在路由器输入路由命令,配置额外的转发信息:

ip route destination-network destination-network-mask next-hop-IP-address (forwarding router interface)

例如,以下命令告知R1怎样到达192.168.3.0以及192.168.4.0

ip route 192.168.3.0 255.255.255.0 192.168.2.254

ip route 192.168.4.0 255.255.255.0 192.168.2.254

R1上输入命令之后,路由表更新如下所示:

image004.png

现在R1理解到达这些网络需要经过R2,但是R2接下来怎么办呢?由于192.168.3.0直接连接到R2R2可以直接ARP主机。但对于192.168.4.0R2需要管理员以下命令来协助:

ip route 192.168.4.0 255.255.255.0 192.168.3.254

路由表相应更新:

image005.png

目前只成功了一半,报文需要返回。查看R3的路由表,发现路由器不知道怎么找到192.168.1.0Node A的报文到达之后,Node B尝试回复,但是会从R3收到ICMP destination unreachable的消息。在Node A看来,好像传输从未收到回复。要完成这一过程,需要在所有路由器上对于所有未知网络输入ip route命令来更新路由表。

image006.png

R2真正的路由表以及在R2上输入的ip route命令如下图所示:

image007.jpg

动态路由:

路由协议允许路由器动态共享远端网络的信息以及自动将这信息添加到自己的路由表中。动态路由协议的一大好处在于当拓扑变更时,路由器会交换路由信息,从而能够自动学习新增网络,并且在链路故障时,找到替换路径。

路由协议完成这一功能的方式取决于它所使用的算法以及此协议的操作特性。通常来说,动态路由协议的执行过程如下:

1.     路由器在端口发送和接收路由消息。

2.     路由器与其他使用相同路由协议的路由器共享路由信息。

3.     路由器交换路由信息来学习远端网络。

4.     当路由器检测到拓扑变化时,路由协议将这一变化通知其他路由器。

网络发现

例如,R1R2R3之间的拓扑:

image008.jpg

R1:发送10.1.0.0以及10.2.0.0的更新;从R2接收10.3.0.0的信息,跳数加1;在路由表中存储10.3.0.0的信息,metric设为1

R2:发送10.3.0.0以及10.2.0.0的更新;从R1接收10.1.0.0的信息,跳数加1;在路由表中存储10.1.0.0的信息,metric设为1。从R3接收10.4.0.0的信息,跳数加1;在路由表中存储10.4.0.0的信息,metric设为1

R3:发送10.3.0.0以及10.4.0.0的更新;从R2接收10.2.0.0的信息,跳数加1;在路由表中存储10.2.0.0的信息,metric设为1

交换路由信息

路由器周期性的更新信息。在最初的网络发现结束后,每个路由器通过发送和接收以下更新来继续收敛的过程:

image009.jpg

R1:发送10.1.0.010.2.0.0以及10.3.0.0的更新;从R2接收10.4.0.0的信息,跳数加1;在路由表中存储10.4.0.0的信息,metric设为2;从R2收到相同的10.3.0.0的更新,metric1,不作更新。

R2:发送10.1.0.010.2.0.010.3.0.0以及10.4.0.0的更新;从R1接收10.1.0.0的信息,不作更新;从R3接收10.4.0.0的信息,不作更新。

R3:发送10.2.0.010.3.0.0以及10.4.0.0的更新;从R2接收10.1.0.0的信息,跳数加1;在路由表中存储10.1.0.0的信息,metric设为2;从R2收到相同的10.2.0.0的更新,metric1,不作更新。

距离矢量路由协议切断了邻居路由之间的环路,也称为水平分割。水平分割阻止信息从同一端口接收之后再发送出去。例如,R2不会从Serial 0/0/0端口发送网络10.1.0.0的信息,因为R2Serial 0/0/0学习了10.1.0.0

网络中的路由器收敛了信息之后,路由器可以使用路由表来决定到达目的地的最佳路径。不同的路由协议有不同的计算最佳路径的方法。

路由收敛

当所有路由器对于整个网络有准确的更新之后,达到路由收敛状态,如下图所示:

image010.jpg

收敛时间是路由器分享信息,计算最佳路径,更新路由表的时间。收敛同时是协作并且独立的。路由器相互之间共享信息但是必须各自独立的计算自己路由拓扑改变所带来的影响。  由于它们各自独立地关于新的拓扑达成一致,于是说它们收敛于这种一致。

1.2K 消息

2014年9月8日 17:00

谢谢建议

1 消息

2014年9月11日 03:00

我竟然没找到这篇文章的中心思想。这回复怎么跑到最后了。刚看完第四篇。第五留着明天看。

PS:一直在看你的系列,写的蛮好的,虽然科班出身,但是有些细节还真是不透,看了之后,嘿,挺舒畅的。希望能写出更多更好的文章。

1.2K 消息

2014年9月11日 19:00

谢谢~

主题思想是写清楚报文在网络传输的过程中各环节(交换机,路由器)的具体处理过程,我自己觉得这个还是挺重要的。其他一些网上比较容易找到的内容就不再写了。

1.2K 消息

2014年9月14日 16:00

网络基本功(六):链路聚合

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

介绍

链路聚合是在两个设备间使用多个物理链路创建一个逻辑链路的功能。这种方式允许物理链路间共享负载。交换机网络中使用的一种链路聚合的方法是EtherChannelEtherChannel可以通过思科的端口聚合协议(Port Aggregation Protocol, PAgP)或链路聚合协议(Link Aggregation Protocol, LACP)来配置或协商。


更多信息

EtherChannel

EtherChannel本来是由思科开发,将若干Fast EthernetGigabit Ethernet捆绑成一个逻辑通道的交换机到交换机的LAN连接技术。配置了EtherChannel之后的虚拟接口称为一个port channel。物理接口捆绑在一起,成为一个port channel interface。思科最早称之为EtherChannel Fast EtherChannel(FEC),也称为Gigabit EtherChannel(GEC),非思科公司常将链路聚合简写为LAG

通过EtherChannel,一个逻辑链路的速度等于所有物理链路的总和。例如,如果你用4100 Mbps的以太网链路创建1EtherChannel,则EtherChannel的速度是400 Mbps。但是也会有一些问题,并不是在所有情况下增加的容量都确实等于物理链路的速度之和。例如,四个1 Gbps链路组成的EtherChannel,默认每一个会话的速度还是限制在1 Gbps

默认情况下EtherChannel按照报文的目的MAC地址,给它指定一个物理链接。这也意味着EtherChannel上一个工作站与另一个服务器通信,只会使用到一条物理链路。实际上,EtherChannel上所有目的地为该服务器的数据流都只会走这一条物理链路。也就是说,一个用户同一时刻只会得到1 Gbps。这种模式也可以更改为每一个报文在不同的物理链路上发送,当有多个不同的目的地址时,每一条路径都可以得到利用。

EtherChannel创建的是一对一的关系,即一个EtherChannel连接两个设备。可在两台交换机之间,或在一个激活了EtherChannel的服务器和一台交换机之间创建一个EtherChannel连接。但是,同一个EtherChannel连接无法将数据流发送到两台交换机。

image002.gif

EtherChannel负载均衡:

如前所述,EtherChannel默认情况下并不真的为各链路速度之和,只是在特定的链路发送特定的报文,给人的感知速度为所有链路的速度总和。EtherChannel 帧分发使用 Cisco 专有的hash算法。 该算法是确定性算法; 如果使用相同的地址和会话信息,则总是散列到通道中的同一端口。 此方法可避免无序传送数据包。这一算法中很重要的一点是,并不保证物理链路之间完全地均衡。

该算法将目的MAC地址值hash0-7的范围。无论EtherChannel中有多少链路都是同样的值。每一条物理链路都指定这八个值中的一个或多个,取决于EtherChannel中共有几条链路。

下图显示了按照这种算法报文是怎样分布的,注意到分布并不总是均衡的。

image003.png

有八条物理链路的EtherChannel,每条链路指定单一值。有六条链路的EtherChannel,两条链路指定两个值,剩下四条链路指定四个值。这意味着两条链路(理论上均衡分布)会收到比剩余四条链路多一倍的数据流。从这张图很明显的看出,要使流量在各链路间均衡的分布(理想情况下),应当设置124,或8条物理链路。无论决定链路的信息是什么,算法都会将链路值hash0-7

用户可根据需求对算法进行更改。默认行为是使用目的MAC地址,但是,按照软硬件版本的不同,还可以有如下选项:

·         MAC地址

·         目的MAC地址

·         源和目的MAC地址

·         IP地址

·         目的IP地址

·         源和目的IP地址

·         源端口

·         目的端口

·         源和目的端口

更改默认设置的原因由应用情况而定。下图显示了一种相对普遍的布局:

一组用户连接到交换机A,通过EtherChannel连接到交换机B。默认按照每一个报文的目的MAC地址做负载均衡。但是,比较常见的情况是一台服务器的流量显著高于其他服务器。

image004.jpg

让我们假设该网络中email服务器接收到多于1 Gbps流量,而其他服务器大约为50Mbps。使用基于目的MAC地址的方法会导致在EtherChannel丢包,因为目的地为email 服务器 MAC地址的报文会走同一条物理链路。一条链路发生过载时报文不会分散到其他链路,只会丢弃。在这种一台服务器接收流量超大的情况下,目的MAC地址负载均衡就不合理了。而根据源MAC地址负载均衡更为合适。

另一点需要记住的是,负载均衡算法只适用于EtherChannel发送的报文。它并没有双向功能。在交换机A上使用基于源MAC地址的算法可能比较合适,但对于交换机B不一定合适,因为email服务器是使用最多的服务器。当报文从email服务器返回,源MAC地址就是它自己本身。因此,如果我们在交换机B上使用基于源MAC地址的负载均衡算法,就会碰到一开始同样的问题。

这种情况下,解决方法是在交换机A使用基于源MAC地址的负载均衡算法,而在交换机B使用目的MAC地址的算法。如果所有服务器在一台交换机而所有用户在另一台,这一解决方案是有效的。但现实中更常见的情况是所有这些设备都连接在一台交换机上,这时就没那么走运了。

下图显示了一个比较有趣的问题。一台服务器通过EtherChannel连接到交换机A,一台NAS也通过EtherChannel连接到交换机A。服务器的所有文件系统都挂在到NAS设备上,服务器作为一台服务超过5000人的数据库服务器负载很大。服务器和NAS之间的带宽需求超过2Gbps

image005.jpg

目前没有解决这一问题的简单的方法。不能使用源MAC地址或目的MAC地址做负载均衡,因为每种情况都只有一个地址。同样的理由,也不能用源和目的MAC地址结合,源和目的IP地址结合的方法。也不能基于源或目的端口号,因为一旦协商结束后,它们就不会改变。一种可能的方法是,驱动支持的情况下,改变服务器和/NAS设备,每一个link都有自己的MAC地址,但是报文还是会从其中一个地址发出另一个地址接收。

唯一的解决方法是手动负载均衡或采用更快的链接。将链路分为41Gbps,每一个有自己的IP网络,每个连接mount挂载不同的文件系统可以解决这一问题。有点太过复杂的话,直接使用更快的物理连接,如10 Gbps

             

1.2K 消息

2014年9月21日 18:00

网络基本功(七):细说IP地址与子网

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese image001.gif

介绍

起初,IP地址只有两层结构:网络与主机。子网地址向其中添加了一层新的结构:不同于仅有主机,网络有分为子网与主机。每一个子网的功能近乎于完整的网络。子网的添加构成了三层网络结构:包含子网的网络,各自由若干主机构成。IP地址由此被分为三个部分:网络ID,子网ID与主机IDIP地址长度仍固定为32位,其中,A类网络8位子网掩码,B类网络16位子网掩码,C类网络24位子网掩码。


更多信息

对于每一类网络,网络数以及每一网络中包含的主机数,决定了它们各自占用多少比特位。这一准则同样适用于如何划分子网与主机。子网数量为2的子网ID次方,每一子网内的主机数为2的主机ID次方。假设一个B类网络154.71.0.0,网络ID16位(154.71),主机ID16位。没有子网的情况下一共可容纳65534台主机。按照实际需求将16位划分为子网与主机:1位子网16位主机,或214313。。。如下图所示,划分为5位子网与11位主机,子网数越多,主机数越少。

image002.jpg

搭建IP子网时,如何划分子网与主机数是最重要的问题之一。子网所占位取决于整个网络中的物理子网数,每一子网中的主机数不能超过子网划分所允许的最大数量。

IP子网掩码,表示法以及子网计算:

在没有子网的网络环境下,路由器通过IP地址的前八位来决定是哪一类型的网络,从而它们知道哪些是网络ID哪些是主机ID。划分子网时,路由器也需要知道主机ID是如何划分成子网ID与主机ID的,但是划分方法可以是任意组合,也没有办法从IP地址看出来。因此,必须有额外的信息告知解析IP地址的设备,这一信息称为子网掩码,以32比特数的形式呈现。

掩码位的10结合布尔函数与和或的功能对于地址中的比特位进行选择或清除。子网掩码中的32位对应于IP地址相同位置上的数字。掩码位为1时,则地址中该位作为网络ID或子网ID,而掩码位为0时,则地址中该位表示主机ID

子网掩码为1:将IP地址中的011进行与操作,即:当子网掩码位为1IP地址保持不变。

子网掩码为0:任何数和0做与操作都是0,即:当子网掩码位为0IP地址清零。

因此,将子网掩码应用于IP地址,网络ID和子网ID保持不变,移除主机ID。执行此功能的路由器由此获得子网地址,因为它知道网络类型,因此能够区分网络位与子网地址位。

举例来说,假设将B类网络154.71.0.0划分5位为子网ID11位为主机ID。因此,子网掩码有161代表网络部分(B类网络),接下来51作为子网部分,110用作主机ID。二进制数表示为11111111 11111111 11111000 00000000,十进制数表示为255.255.248.0

image003.jpg

举例:

假设有一台主机IP地址154.71.150.42,路由器需要找出该主机位于哪一子网,则它的掩码操作如下图所示:

image004.png

image005.jpg

结果,154.71.150.42所属的子网为154.71.144.0。另一台路由器能够从中区分出网络ID与子网ID,因为地址的前两个比特位是10,是一个B类网络。所以网络ID16位,子网ID一定是1721。这里,子网是10010,或子网18

提一个问题:既然子网掩码只是将网络地址划分出网络部分与子网部分,那为什么还要使用另外的32位比特数255.255.248.0,而不直接将IP地址第21位指定为分界线呢?这是有历史原因的:因为需要考虑不连续的掩码情况。同时,它也能够让路由器进行快速的掩码操作来找出子网地址。

除了将16位划分为5位子网ID11位主机ID,标准也允许前2位用作子网ID4位用作主机ID,之后3位用作子网ID7位用作主机ID。因此子网掩码为11000011 10000000。当然,这会造成混淆,是不推荐的,实际中也没有人会这么做。

鉴于非连续掩码实际不会应用,以及现今的计算机速度大幅提升,新的表达法为154.71.150.42/21

IP子网掩码设定:

假设B类网络154.71.0.0,没有子网的话一共有65,534台主机。划分子网时,按照以下方法:

·         1位用作子网ID15位用作主机ID:那么子网数为2^1,第一个子网是0,第二个子网是1。每一个子网的主机数是2^15-2,或32766

·         2位用作子网ID14位用作主机ID:那么子网数为2^2,四个子网0123。每一个子网的主机数是2^14-2,或16382

子网与主机ID位的划分取决于子网数与子网中最大主机数。假设一个B类网络中有10个子网,需要4位表示子网(2^4=162^3=8),12位用作主机ID,每一子网最多4094台主机。

如果你有20个子网,每一子网3000台主机,那么就会碰到问题。需要5位表示20个子网,而3000台主机需要12位。这时需要重新组织物理网络,如果无法做到,就需要第二个B类网络。

自定义子网掩码的方法是:从指定网络类型的默认子网掩码中,从最左边的0位开始,按照需要的子网数将0改为1。假设C类网络200.13.94.0,最后8位可供划分子网与主机,则有6种不同的划分方法。假如使用3位作为子网ID5位作为主机ID,那么:

默认C类网络子网掩码:11111111 11111111 11111111 00000000

将最左边的30改为111111111 11111111 11111111 11100000

即子网掩码为:255.255.255.224

通常情况下,所有子网大小必须相同。因此,最大一个子网的主机数决定了需要多少位比特用作主机ID。因此前例中,前19个子网每个子网最多100台主机,而第20个子网需要3000个主机,就会碰到问题。这种情况下,需要将最后一个过大的子网拆成若干个小的子网。

image006.jpg

1 消息

2014年9月22日 00:00

Nice

1.2K 消息

2014年9月23日 01:00

增添三节TCP内容。

1.2K 消息

2014年9月23日 20:00

相关书籍推荐,不过都是英文的~

networking essentials

Packet Guide to Routing and switching

TCP/IP Guide

13 消息

2014年9月23日 20:00

谢谢美女的分享啊。。真的学到很多东西, 但不知道你是否有关于这类知识的书籍推荐呢?

找不到事件!

Top