Skip navigation.
主页
提问,思考,学习,分享,积累
droplet 的图片

understanding linux network internals 第六部分: 邻居子系统 [连载]

to be added

droplet 的图片

understanding linux network internals 第五部分:ipv4 [连载]

to be added

droplet 的图片

understanding linux network internals 第四部分:桥 [连载]

第14章 桥:基本概念
在讲述桥的第一个章节中,我们将看到:桥是什么,如何使用它,以及桥的使用限制等。我会着重描述透明桥,地址学习,以及转发数据库的使用。在本章中,我会解释为什么桥不能在有环路的拓扑中使用,而在下一章中,我们会看到生成树(STP)协议如何解决这个问题。当然,还有很多其他类型的桥,不过它们很少被用到,而且linux内核也没有实现它们。
本章所使用的网络拓扑并不代表真实的网络环境,它们只是按教学的要求而绘制的演示拓扑。

droplet 的图片

understanding linux network internals 第三部分: 发送与接收 [连载]

第三部分:发送与接收

本部分用五章的篇幅来描述内核中网络报文的流动路径,以及各功能模块如何作用于此网络报文,你将会对网络协议栈有一个总体的印象。你将会了解每个子系统的功能,以及它们在协议栈中的位置。在这一部分,我们不描述网络路由(有专门的章节描述这个话题);我们也不描述防火墙功能,因为它已超出了本书所讲述的范围。

术语发送通常用于描述任意方向上的通讯。但是在内核中,发送只用于表示向外发送数据帧,与之对应的,接收指从外部收到数据帧。在某些地方,我也会用ingress表示接收,egress表示发送。

在两台主机之间转发网络报文同样涉及到接收和发送过程。在第10章中,我会描述一些转发的话题,在第五部分和第七部分,我会详细描述它。

在第一章中,我们已经了解了术语帧,数据报,网络报文之间的区别。由于在第三部分中,我们主要讨论的是L2和L3之间的接口,所以术语帧和网络报文在大部分情况下是相等的。尽管大部分时间,我都使用术语帧,但是某些时候,我也会使用术语网络报文来表示哪些没有引用特定协议层信息的数据包。在讨论代码时,我经常使用术语网络报文。

下面是我们将会在第三部分中看到的内容

第九章:中断和网络设备驱动

在本章中,你将会了解软中断处理程序和内核同步机制。

第十章:网络帧接收

本章描述l2如何接收一个网络帧。

第十一章:网络帧发送

本章描述l2如果发送一个网络帧。

第十二章:中断相关的信息

本章收集了前面章节中描述的与中断相关的信息。

第十三章:协议处理程序

droplet 的图片

Intelligence on endpoint or Intelligence on gateway

在计算机网络里面,endpoint有更多的Intelligence;gateway相对简单很多,但现在的趋势是要在gateway上增加更多Intelligence,把原来放在endpoint上的工作,放到gateway上来做。
比如TCP协议,gateway基本上是什么都不做,由endpoint来保证可靠性。这一点与电信网络不同。比如电话网里面,电话机应该是非常简单的,但是电话交换机就很复杂。在gateway上提供可以靠性,资源消耗太大;在endpoint上提供可靠性,效率可能不会很高。

droplet 的图片

Network layers

网络是分层次的,不管是协议的定义,还是设备的部署,都会分成多个层次。比如在enterprise network里面,交换机就会分为:

access ---> aggregate ---> core

而Internet也有一下几个层次

access---> Edge ---> core

access是用户接入层。占用的端口数量最多,但速度相对是最慢的。Aggregate负责access直接的转发。在同一个交换机,或者比较小的网络里面,转发可以直接在access交换机上。但是对大型网络里面,就需要很多aggregate交换机来把流量汇聚上来。Core层负责最终的转发。Layer的设计,目的是为了隔离不同层次的需求,简化设计。

如何简化层次?access是比不可少的,如果能把aggregate和core合并,问题就会简单很多。这需要交换机有足够的容量和端口数目。这是未来努力的方向。

droplet 的图片

MPLS overview [转载]

MPLS入门可以看看。

MPLS-overview.pdf

droplet 的图片

Reliable and performance

Performance和reliable有时候是两个相互矛盾的特性。比如UDP和TCP,在相同的介质上,UDP的传输性能肯定比TCP要高,这里只考虑相同包大小。至于差距有多大,现在还看到有数据描述这个。TCP提供了可靠的包传输,对于上层应用来说,就非常方便。Reliable和performance这两个目标是无法兼顾的,如何取舍就要看应用环境了。

在packet switch的网络里面,可靠并不单指收发,也需要考虑处理的速度。因为packet buffer的大小是有限的,如果没有flow control,两端的处理速度不匹配时,就会出现丢包。TCP的flow control是端到端的,所以中间的网络处理就必须足够的快,因为中间的网络没有flow control的措施。

当resource是动态的时候(包括CPU, memory,IO等),丢包就是随机的事件。在这种情况下,unreliable的传输协议就无法胜任了,需要考虑使用reliable的传输协议。

Reliable在HA的应用里面非常重要,具体如何取舍,就看HA能够保证的可靠性到底有多高了。

droplet 的图片

VPN技术比较

VPN(virtual private network)是指在共享介质上创建私有网络。这个和VLAN有点类似,VLAN是在物理网络里面创建虚拟的网络;而VPN也是这个用途。

VPN可以分为两大类:

1)security vpn。这一般指具有加密、认证功能的VPN。数据在虚拟通道里传输时是加密和认证的。这类VPN包括,IPSEC, L2TP, SSL等。安全通道两端是用户的私有网络,用户数据在通道里传输时受保护。

2)trust vpn。这一般指虚拟通道,比如Layer 3 MPLS,或者是Layer 2 MPLS,或者是VPLS。这个通道只是隔离了不同用户的数据,而没有提供保护的功能。

VPN的目的是在公共网络上传输私有数据,比如在internet上。为保证服务质量,基于MPLS的VPN在大型公司骨干网上比较流行。而IPSEC一般会用在分支机构直接。VPN需要对客户隐藏公共网络细节,用户不会感知本地和远程的区别。

http://www.vpnc.org/

kernelchina 的图片

新春快乐,虎年大吉

祝各位读者新春快乐,虎年大吉,新年事业步步高升,身体健康,合家幸福。