您的位置:首页 > 理论基础 > 计算机网络

Linux内核工程导论——网络:内核特性

2015-09-11 22:29 260 查看


网络特性

       QoS and/orfair queueing

IP层以下

802.1d以太网桥

802.1Q/802.1ad VLAN Support

ANSI/IEEE 802.2 LLC type 2支持

MPLS

DANH ("Doubly attached node implementing HSR")

Switch

       Open Vswitch

其他网络层以上网络协议

CCITT X.25 Packet Layer

LAPB Data Link

DCCP

         IETF提出的用来取代UDP的协议。

SCTP

         用来取代TCP的

RDS

在Infiniband, iWARP,或TCP网络上提供可靠的,顺序的服务的传输协议。

TIPC

         在高可信度网络中(例如自己的动态集群网络服务器),TCP的耗费太大,爱立信提出的新的可靠数据传输服务。与SCTP定位类似。

其他网络体系

ATM

IP over ATM
LAN模拟
RFC1483/2684桥支持

DECnet

         这是一种协议族。与IP对应的网络层协议是DRP:DECnet Routing Protocol,与TCP对应的传输层是NSP: Network Service Protocol。不像TCP/IP族,DECnet协议族在传输层之上还有会话层SCP: Session Control Protocol和网络管理层MOP:Maintenance Operation Protocol。是早期与TCP/IP竞争的协议族,但最终被TCP/IP协议族完全击败。

IPX/SPX

         这是另一种协议族。IPX与IP功能类似,SPX与TCP功能类似。这个协议族中没有与UDP类似的协议。这个协议族目前仍有很多用户,主要原因是在LAN环境中,传输层SPX的效率比TCP高。

         这套协议最早是novell在dos上实现的,Windows将smb/Netbios构建在IPX/SPX之上。另外,NCP也是类似的广泛使用的网络文件与打印共享协议。不过近期,无论是NetBios还是NCP都已经支持TCP/IP协议族。所以IPX/SPX的可取代性越来越高,应用就越来越少。

Phone Network protocol (PhoNet)

6LoWPAN

AppleTalk

802.15.4

Data Center Bridging (DCB)

multi-hop ad-hoc mesh networks

受控网络

PPP、PPPoE、PPTP、L2TP

         PPP是个数据链路层协议,能控制上层通信的使能、加密和计费。例如未经过PPP认证的网络,IP数据包是发送不了的。PPP改进自SLIP,由于是数据链路层协议,其并不关心网络层是IP协议还是IPX、还是Appletalk协议。

         PPP的过程分为链接建立和网络两部分。链接建立可以认证,网络部分是认证完成后协商如何加密传输上层的数据。

         PPP协议是点对点的,换句话说,PPP协议没有寻址功能。但是实际的网络环境中,没有寻址功能是基本没用的。所以人们在PPP的外面封了一层以太网的头部,供最开始的时候节点向ISP建立PPP连接寻址用。这种网络叫做PPPoE。

         以太网的寻址无法经过路由器,虽然有了以太网编址让ISP可以一个服务端服务多个客户端,但是无法经过路由器的缺点也得让ISP必须把认证服务器在物理上与用户放的很近。因此就诞生了新的需求,是否可以将PPP认证服务器放到网络的任何地方?这就必然用到网络层在因特网上寻址的能力和传输层的传输能力。PPTP就是如此,其认证过程使用TCP(在PPP连接建立前,前端路由器只放行路由到认证服务器的数据包),其网络过程使用IP上的GRE封装。

         随着PPTP的使用,发现与TCP/IP协议族绑定的缺点是无法使用在其他网络中。所以L2TP诞生了。其不依赖于任何的网络层和传输层,只要网络层能够路由数据包,传输则由L2TP协议本身完成。还有一个改进就是PPTP一条链路只能有一个会话,但是L2TP可以有多个,因此一台PC使用多个L2TP应用就成为可能(例如多个窗口同时远程登录)。

PPP状态迁移图



l  Dead:用于表示物理层状态。当物理层准备好(例如载波检测或者管理员配置)时,将从此阶段切换到Establish阶段,并向LCP自动机发送一个UP信号。当连接结束时(例如将猫拔出),将回到本阶段。这个阶段时用来表示物理层的连通性。
l  Establish:在本阶段,LCP使用进行网络参数协商,并建立连接。挡在Network和Authenticate阶段收到LCP Configure-Request 将回到Establish阶段。如果接下来需要认证阶段,则本阶段必须协商认证的方式。
l  Authenticate:建立连接后,立即进入认证阶段。认证阶段只允许特定的数据包通过,当认证通过时将进入Network阶段,失败则进入Terminate阶段。本阶段可选。
l  Network:完成上述步骤后,网络中的每一层都调用NCP协议进行每层的网络配置。当NCP进入open状态后,所有的网络包就可以在已经建立的链路上通行了。
l  Terminate:本阶段只接受LCP数据包,以LCP发送终止数据包开始。本阶段由LCP沟通关闭连接。并进入dead阶段。
认证方式
PAP为基本的两次握手认证,口令为明文的方式传输。拨号用户发送用户名和密码到接入服务器,接入服务器通过RADIUS协议到RADIUS服务器上查看是否有此用户,口令是否正确,然后发送相应的响应。
CHAP为三次握手认证,口令为密文传输,在认证过程和网络通信过程会周期性的发送认证。CHAP拨号用户发送用户名到接入服务器,接入服务器发送随机产生的报文交给拨号用户,拨号用户用自己的口令用MD5(可选)算法进行加密,传回密文,接入服务器从RADIUS服务器取得的用户口感另和随机报文用MD5算法加密,比较二者的密文,根据比较的结果返回失败或成功的响应。

RADIUS

         受控网络访问中有个很重要的概念是AAA(authentication, authorization and accounting)。本质上是在网络中设置一台服务器,任何希望连接网络的设备都要经过这台服务器验证密码,授权和计费。

         看似简单的3个功能却有其实现上复杂的一面。为了支持这些功能,RADIUS协议定义了很多数据包格式,用来与希望得到认证授权的主机通信。此外,安全规则设计,代理转发,跨网络认证等考量也增加了RADIUS的复杂度。虽然实现上复杂,却在原理上非常简单。

 

xfrm、netfilter

多个ip

其他网络功能

bonding

 

RxRPC

远程过程调用socket,

+-------------+

                | Application |

                +-------------+

                |  XDR |         Presentation

                +-------------+

                |  RxRPC |         Session

                +-------------+

                |   UDP |        Transport

                +-------------+

         这是在UDP之上构建的一个可靠传输协议。当然协议的设计并不依赖于UDP,只是目前只在UDP上实现。参与者之间维护多条虚链接。在RxRPC上的每个数据传送都是一次调用,模拟的适用场景是大规模的分布式的远程过程调用。

CAIF

         "CommunicationCPU to Application CPU Interface" (CAIF)

Ceph

rdma

Netlink

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息