计算机网络-网络层笔记
- 网络层只提供best effort 的服务,不能保证带宽,时延等等
- 一些network layer包含的协议
-
routing protocols
- path selection
- RIP, OSPF, BGP
-
IP protocol
-
ICMP protocol
-
两个network layer的主要作用:
1、forwarding(data plane)
move packets from router’s input
to router’s output
(在router的每内部,决定datagram从哪个output port出)
下面展示的是router input port的基本架构:
- 这里的switch fabric是交换结构的意思,可以看做是路由器中的网络
红色框框住的部分,路由器有了header field
通过转发表(forwarding table
)查找输出端口,这部分有两种可能的方法:1:destination-based forwarding, 2: generalized forwarding
destination-based forwarding
的基本思想
假设我们有如下的forwarding table:
我们目的地中的前缀的前n位和表中的前缀进行匹配,从而选择链路端口。但是我们会发现可能目的地与多个前缀相匹配,这时候就需要用到最长前缀匹配规则(longest prefix matching rule),即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组
Swtiching fabric
大致分为三种:
1.memory
一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口处被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。(不能同时转发两个分组)
2.bus
让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组
3.crossbar
与前面两种交换方法不同,纵横式网络能够并行转发多个分组。纵横式交换机是非阻塞的(nonblocking),即只要没有其他分组当前被转发到该输出端口,转发到输出端口的分
组将不会被到达输出端口的分组阻塞。
router output port 的结构和input port 的结构类似
对于包的scheduling我们有以下的几种方式
1.FIFO
(先进先出)
如果队列排满了怎么办呢?
- tail drop
- priority
- random
2.priority scheduling
一这幅图中的红绿packets为例:
红色的包的优先级比绿色的高,① ② ③首先进入服务区(在③进入的时候①还没有被传出完毕),在①离开时服务区中还剩②和③,③的优先级高,所以三先离开,在③完成了离开之后服务区中只剩下②,所以②开始离开,再②离开到一半的时候④进来了,但是由于②已经处于正在离开的状态,所以即使④的优先级比②高,还是需要等待②离开之后才能继续离开。
3.Round Robin(RR) scheduling
红绿轮着来,除非两个中哪个没了
4.Weighted Fair forwarding
按比例侧重的控制包的离开:
2、routing(control plane)
determine route
taken by packets from source
todestination
(在不同的router之间)
我们使用routing protocol的目标是选出来一条好的路径,那么什么样的路径算是好的呢,对于好可以有不同的定义,常见的为least “cost”, “fastest”, "least congested"
traditional routing algorithm
- per-router control
SDN
- logically centralized control
下面介绍的是两种常见的routing的算法
①:link state algorithm(知道global information)
Dijkstra’s algorithm:
首先是一些基本的定义
- c(x,y): link cost from node x to y; = ∞ if not direct neighbors
- D(v): current value of cost of path from source to dest. v
- p(v): predecessor node along path from source to v
- N’: set of nodes whose least cost path definitively known
待补
②:distance ve*ctor algorithm(知道decentralized information)
待补
intra-AS routing in the internet: OSPF
在实际中我们会把众多的router,按组分到不同的 autonomous system(AS)
(a.k.a. “domains”)中去,在一个AS中有两类的router,这两种router的区别在于和其它的AS有没有连接。
- gateway router
- interrior router
在同一个的AS之间我们会使用intra-AS routing
在不同AS里面我们会使用inter-AS routing
.
- Intra-AS routing (Interior gateway protocol, IGP)
- RIP: Routing Information Protocol(基于distance vector),over udp
- OSPF: Open Sortest Path First(基于link state),是over ip的
- IS-IS: 很像OSPF
- IGRP
- Inter-AS routing (boarder gateway protocol, BGP),over TCP
同一个AS里面的router会使用相同的intra-domain protocol而不同一个AS里面可以使用不同的intra-domain protocol。在一个AS内部 gateway router的功能包括了两种routing。
OSPF的优点:
- security
- multiple same-cost paths
- intergrated uni- and multi-cast support
- hierarchical OSPF in large domains
在一个hierarchical的OSPF示例:
BGP
BGP分为eBGP
和iBGP
,eBGP是在不同的AS之间运行的,iBGP是在相同的BGP之间运行的。从一个给定的路由器到一个目的子网可能有多条路径,这时候就需要选择最好的路由。首先我们需要知道一些有关于BGP的术语。
Prefix (destination) + attributes = “route”
,在属性中比较重要的就是AS-PATH
和NEXT HOP
。AS -PATH是已经走过的AS的集合(不包括开始的AS)而NEXT HOP是AS・PATH起始的路由器接口的IP地址。
hot potato routing:
对于起始路由器而言,它并不关心inter-domain cost,他只关心怎么规划路径才能使得intra-domain cost最小。
协议对比:
图片来源:https://blog.youkuaiyun.com/Jungle_hello/article/details/51438886?utm_source=copy
ICMP:internet control message protocol
主机和路由器用ICMP协议来交换网络层的信息:
- error reporting
- echo request
ICMP通常被认为是IP的一部分,但从体系结构上讲它位于IP之上,因为ICMP报文是承载在IP分组中的。
traceroute(书中解释):
Traceroute是用ICMP报文来实现的。为了判断源和目的地之间所有路由器的名字和地址,源主机中的Traceroute向目的地主机发送一系列普通的IP数据报。这些数据报的每个携带了一个具有不可达UDP端口号的UDP报文段。第一个数据报的TTL为1,第二个的TTL为2,第三个的TTL为3,依次类推。该源主机也为每个数据报启动定时器。当第□个数据报到达第〃台路由器时,第孔台路由器观察到这个数据报的TTL正好过期。根据IP协议规则,路由器丢弃该数据报并发送一个ICMP告警报文给源主机(类型11编码0)。该告警报文包含了路由器的名字和它的IP地址。当该ICMP报文返回源主机时,源主机从定时器得到往返时延,从ICMP报文中得到第n台路由器的名字与IP地址。
SNMP:simple network management protocol
在了解SNMP**(一个应用层协议)**之前我们首先需要知道网络管理的基本框架,网络管理的基本组件如下所示
- managing server(管理服务器)
- managed device(被管设备)
- management information base(MIB)(管理信息库,这些信息的值可供管理服务器所用)
- network management agent(网络管理代理)
- network management protocol
IP: Internet Protocol
上面是一个ip协议的基本格式,有利于我们对ip协议有一些初步的认识。
IP fragmentation
MTU
: max.transfer size
在实际的网络连接中,不同链路层协议会有不同的MTU,有时一个包的长度太长,所以需要对包进行fragmentation(分片)的操作。为坚持网络内核保持简单的原则,IPv4的设计者决定将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。
下面是一个分片的例子:
假设MTU为1500 bytes,现在要将一个4000bytes长度的包进行分片
分片的结果如下:
首先我们要关注的是分片后包的长度,1500+1500+1040=4040,通过对比我们可以发现,分片后包的总长度比分片之前的包的长度要多出了40。这是由于之前ip只有一个head field,现在分为了三个包之后有了三个ip field,这样使得多出了两个head field,而一个ip的head field的长度为20 bytes,所以长度增加了20。然后我们要关注的是offset,对于分片后的第二个包,offset的值为1480/8,这是根据第一个包的data的长度除以8得来的。
IP address
IP address总共有32-bit. 例:192.168.10.1 这个ip地址中以点为划分,将32位分成了4个八位
interface
: connection between host/router
and physical link
IP address assocciated with each interface
subnet!!!
对于一个ip地址,分为subnet part
和host part
,高位为subnet part低位为host part,subnet part 相同的interface属于同一个子网,属于同一个子网的interface能够不经过路由器相互通信。那么如何界定哪些位属于子网呢?例:192.168.10.1 /24, 在这个例子中,/24表示的是最左边的24比特定义了子网地址。/24有时也被称作子网掩码,和另一种表达形式:255.255.255.0是等效的。
两种子网掩码形式的转换(例):
255.255.255.0 → 11111111.11111111.11111111.00000000 对应/24
255.255.0.0 → 11111111.11111111.0.0 对应/16
255.255.128.0 → 11111111.11111111.10000000.00000000 对应/17
255.255.254.0 → 11111111.11111111.11111110.00000000 对应/23
子网聚合(aggregation)
例:
1. 172.16.129.0/24
2. 172.16.130.0/24
3. 172.16.132.0/24
4. 172.16.133.0/24
为了做子网聚合,我们首先将上述的ip地址后面不同的比特写成二进制比特的形式
- 172.16.10000001.0
- 172.16.10000010.0
- 172.16.10000100.0
- 172.16.10000101.0
通过对比我们能够发现高亮标出来的地方的值是相同的,所以我们设定的新的子网id就是前面的21位。新的子网的ip表示为172.16.128.0/21
CIDR: Classless InterDomain Routing(无类别域间路由选择)
因特网的地址分配策略被称为无类别域间路由选择(Classless Inlerdomain Routing,CIDR),一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。
形式为a.b.c.d/x
的地址的x最高比特构成了 IP地址的网络部分,并且经常被称为该地址的前缀(prefix)。
DHCP: Dynamic Host Configuration Protocol (动态主机配置协议)
又被称为plug-and-play protocol,是基于UDP的协议
goal:能够使得主机能够动态获取ip地址
- reuse of address
host获取DHCP 的简单步骤:
- host broadcast DHCP discover
- DHCP server respond with DHCP offer
- host request IP address DHCP request
- DHCP server send address DHCP ack
DHCP ack中包含的信息可以不止ip address,还可以包括
NAT: network address translation
整个local network的信息都通过138.76.29.7这一个ip地址出去。
接下来的这幅图,完美的解释了一个使用了NAT的实例
IPV6
datagram format:
-
fixed-length 40 byte header
-
no fragmentation allowed
-
no checksum
transition from IPV4 to IPV6:
即在IPV6的外面套上IPV4的header和source, dest addr
Tunneling:
假如在一些路线中,不仅仅有IPV6的路由器,还有IPV4的路由器,我们需要用上面所讲述的转换的方法,做一个tunnelling的操作
这里面比较需要注意的是src和dest在tunneling时候的变换,可以看到,在做tunneling的时候,src变成了连接第一个IPV4路由器的IPV6路由器的ip地址,而dest变成了连接最后一个IPV4路由器的IPV6路由器的地址。
Generalized Forwarding and SDN
通用的“匹配加动作”范式,其中能够对协议栈的多个首部字段进行“匹配”,这些首部字段是与不同层次的不同协议相关联的
flow: defined by header fields
generalized forwarding: simple packet-handling rules
- pattern: match values in packet header fields
- actions:
drop
,forward
,modify
,matched packet or send matched packet to controller
- priority
- counters
下面是几个flow table的示例:
- 转载请注明出处:
https://blog.youkuaiyun.com/weixin_44077955/article/details/112004182
- 文章难免有疏漏错误之处,欢迎私信博主及时更正,大家共同进步😜。
Reference:
①:计算机网络-自顶向下方法
②:http://gaia.cs.umass.edu/kurose_ross/ppt.htm
③:https://blog.youkuaiyun.com/Jungle_hello/article/details/51438886?utm_source=copy