【IP 笔记 3.】北邮 互联网协议 Internet Protocol - Network Layer

本文深入探讨了网络层的核心功能,包括路由器的转发和路由选择,详细阐述了IPv4地址、子网划分和DHCP的工作原理。介绍了数据平面与控制平面的概念,特别提到了SDN(软件定义网络)如何通过集中控制实现更灵活的网络管理。此外,还讨论了OSPF和BGP等路由协议,以及ICMP在错误报告和信息反馈中的作用。
摘要由CSDN通过智能技术生成

Network Layer

问答:

  • Router

两个主要功能

  • forwarding,将包从Router的input移动到合适的output(move packets from router’s input to appropriate router output
  • routing,定义包从源头到终点的路径,靠Routing algorithms 实现determine route taken by packets from source to destination

比喻:forwarding是在十字路口的时候选择走哪个路口,routing为规划七点到终点的路程

Network Layer是干嘛的?

  • 将Segment从Sending传输到Receiving的host
    • 在发送端,将segment包装(encapsulates)到datagrams中
    • 在接收端,将segment传到transport layer

Network Layer Protocol存在于哪里?

  • 存在于每一个Host和Router

Router的作用:

  • 检查所有经过路由器的IP datagram的header

4.1 Overview of NetWork Layer

IPv4 地址标记

每一个IPv4有4个字节,一共32 bits

IPv4地址有三种标记方法

  • 二进制标志
  • 十进制带点的标记方法(用得最多的),每一个点之间用一个字节来标识,范围为0~255
  • 十六进制标记

image-20211025200825402

Data Plane

是本地每一个路由器的功能:(local per-router function)

  • 决定datagram如何从路由器的input中forward到路由器的ouput
  • 也是forwarding function

Control Plane

全部大网络的 logic network-wide logic

  • 决定datagram是如何走从end-end路径

两个control-plane的方法:

  • traditional routing algorithms,在路由器中实现
  • Software-defined networking(SDN),在远程的Server中实现
Per-router control plane

在每一个路由器中都有routing algorithm部分相互协调

image-20211025201318932

Logically centralized control plane

一个独特的(通常是远程的)控制器与本地控制代理(control agents CAs)进行交互

image-20211025201508271

网络成服务模型

image-20211025201609650

4.2 What’s inside a router

image-20211025201853097

输入端口功能

分散式切换(decentralized switching

  • 利用header的值,在输入端口的memory中寻找适合forwarding的输出口

目标:以指定的 ‘line speed’ 完成输入端口的处理

队列(往后会有专题):如果datagrams到达的熟虑超过了forwarding进入switch fabric的速率,就会有队列产生

image-20211025202322905

两种forwding的方法

destination-based forwarding

  • 只依靠终点的IP地址

generalize forwarding

  • 依靠任何的header field value来实现

image-20211025202455496

最长前缀匹配规则

longest prefix matching

利用最长的相同前缀在forwarding table中匹配终点地址, 也就是匹配最大的公网id,如果 两个子网有重合,/x 匹配x大的那个

image-20211025202643044

这种匹配规则通常在三元内容可寻址存储器(TCAMs)中使用,也就是非常快的内存

  • 内容可寻址:当前地址到TCAM:在一个时钟周期检索地址,无论表大小
  • 在TCAM中能容纳将近 ~1M 个routing table entries
Switching fabrics

负责将包从input buffer中transfer到何止的output buffer中

转换速率:包从input转到output的率

  • 通常以 $input/output $ line rate
  • N个input:switching速率是所需线路速率的N倍

三种类型的switching fabrics

image-20211025203301087

通过memory来switch

第一代的router

  • 传统的电脑通过CPU直接的控制来swtich
  • 包会被复制到系统的memory
  • 速率被memory的bandwidth限制(每个数据报2个总线交叉,进内存又出内存)

image-20211025203439430

通过Bus来传输

从input端口的memory到output端口的memory是通过一条共享的bus来是实现的

  • 速率被bus bandwidth限制
  • 可提供企业级的接入速率

image-20211025203647891

通过互连网络来传输

Switching via interconnection network

优势:不存在bus bandwidth的限制

高级设计:将数据报分割成固定长度的单元,通过fabric交换单元

输入端口Queueing

当fabric slower than inputs ports时,在输入端口会有input queuing出现

  • queuing delay以及loss都是由于input buffer overflow造成的
  • Head-of-the-Line (HOL) Blocking:队列前的队列数据报阻止队列中的其他数据向前移动

image-20211025204207330

输出端口功能

极为重要

输出端口结构图:

  • 有可能会出现因为缺少buffer而导致的丢包

image-20211025205422728

Buffering:datagram从fabric到达的速率大于传输速率

scheduling discipline:选择特定的正在等待的包取发送

  • 优先scheduling:谁能获得最好的性能发谁,网络中立性
输出端口的Queueing

当通过fabric到达的速率大于输出线的书v了

Queueing (delay) and loss due to output port buffer overflow

计算所需的Buffer

image-20211025210058026

Scheduling mechanisms

Scheduling:选择下一个到发送Link的包

FIFO Secheduling

first in first out

如果queue 是满的,那最后一个进来的包会被丢掉

Priority Scheduling

有一些包是更重要的

例如:看视频一定要看,但是邮件可以等会再来

Round Robin Scheduling

每一个输入端口端口轮着来发包到link

也可以对每一个端口来赋权重,高权重的可以有更多的运力

4.3 IP Internet Protocol

互联网network layer

image-20211111205604846

IP datagram 格式 ipv4

一共长20 bytes

image-20211111205726887

IP碎片化以及重组

网络存在MTU的限制,因此

碎片化:大的IP datagram要分成小片,即一个大的datagram变成几个小的datagram。

重组:在终点进行重组,IP header的bits用来标识每一个片的顺序

碎片化例子

offset = 这个片有的datagram数据的bytes数 除以 8

FB4E48F89C40D6475741D240F9A0BD00

IPv4 Addressing

Introduction

IP地址长:32 bits

interface:连接host/router中实际的线

=> IP地址与interface有关,每一个interface都有特定的IP地址

Classful IP addressing

将IP 32 bits(4 bytes) 分为netid以及hostid

IP分类:

Class A 8bits netid

Class B 16bits netid

Class C 24bits netid

Class D Multicast address

Class E Reserved for future use


通过第一个bytes来区分class:

Class A Byte1 0~127

Class B Byte1 127~191

Class C Byte1 192~223

Class D Byte1 224~239

Class E Byte1 240~255

CC83F073514E52467BC60C42CDB1BF58
留用的私用IP地址

用处:用来测试网络是否与外面连通

image-20211111211108840
Subnet

IP 地址:

  • 高位:子网部分
  • 低位:host部分

什么是subnet

  • 设备的接口都接到同一个子网ip上,形成一片独立的网络,叫子网

Subnet mask(or slash notation): 用netid的bit的数量来表示,例如:

  • /8 class A
  • /16 class B
  • /24 class C
2A95F16C6BD52C3F818CD9D893C50BFC
Subnet的规则

增加netid的长度并减少hostid的长度

image-20211111212351337

为什么要subnetting,因为要尽可能的利用ip地址,根据subnet的host数量来给其分配ip,而不是直接A类B类C类的分

计算Subnet的IP

计算subnetid部分以及hostid部分,通常为有多少个子网就进行对该类网的hostid部分**进行平分**。

步骤:

  1. 计算subnetid所需的bit,有6个子网,则需要3个bit,为 l o g 2 6 = 3 log_26 = 3 log26=3 向上取余。
  2. 将该类网的hostid的MSB的3个bit拿出来,来分subnet
  3. 将6个子网所对应的3个bit后面补(8-3=5) 5个0,计算该子网的开始ip
Subnet example

image-20211224103229350

image-20211224103247115

Subnet个数

image-20211224103417367

VLSM

variable length subnet mask

image-20211224103451874

image-20211224103503750

DHCP

Dynamic Host Configuration Protocol

Q: how dose a host get IP address

目标:允许host在加入网络时动态的从网络server中获得IP

  • 可以renew其曾经使用过的地址
  • 允许重用地址
  • 支持移动users

DHCP overview:

  • host broadcasts “DHCP discover” (optional)

  • DHCP server responds with “DHCP offer” (optional)

  • host requests IP address “DHCP request

  • DHCP server send address “DHCP ACK

流程图(走的是broadcast UDP

image-20211224103907490 image-20211224103945002
DHCP: more than IP address

can also return address on subnet:

  • address of first-hop router for client
  • name and IP address of DNS server
  • network mask
Testing

image-20211224104156567

NAT Network address translation

NAT: network address translation

全部的datagram离开本地网络都用一个IP,不同端口

image-20211206191309785

上图中,右边local network是10.0.0.0/24的网

为什么要有NAT
  1. 一部分的的地址可以不在ISP中,只要有一个IP地址就够了
  2. 对本地网络的设备来说,可以随意更换IP地址而不用通知外面
  3. 可以在不变更本地网络中设备IP的情况下更改ISP
  4. 更好的安全性,里面的设备外面看不到
NAT的应用

必须要有 NAT Router

  • outgoing datagram:将要发出去的datagram的原ip地址和端口替换成NAT IP address和新端口
  • NAT Translation Table:记住每一个源IP 端口号, NAT IP address 新端口号变换对
  • incoming datagrams:将收到的NAT IP Address和新端口号通过Translation Table查询后替换成本地网络中的源IP地址以及源端口
NAT应用例子

image-20211206191824996

NAT更多

16-bit的端口移位着内部能有60,000多的连接

NAT是有争议的,因为:

  • Router应该是Layer3的设备
  • IPv4地址的短缺应该又IPv6来解决
  • 违反端到端的论点(复杂性应该在网络的“末端”而不是中间)

IPv6 Addressing

Datagram格式:

  • 固定长40byte的header
  • 不允许又Fragmentation

IPv6地址长度:

  • 128 bits

Datagram 图:

image-20211206192242583

与IPv4的比较

移除了checksum以减少在每一个hop中的处理时间

添加了options与header外,由下一个报头字段指示

ICMPv6,新版本的ICMP

IPv4转换为IPv6

原因:并非所有的router都支持IPv6

tunneling:IPv6的datagram作为IPv4的Payload,也就是说在IPv6的datagram外再套一层IPv4的header

(IPv6 datagram carried as payload in IPv4 datagram among IPv4 routers)

image-20211206192524251

Tunneling图示

image-20211206192537373

4.4 Generalized Forward and SDN

什么是Software Defined Networking

传统的routing方法:

  • Data Plane使用最长前缀匹配forwarding table来进行forwarding
  • Control Plane在一个Router中计算forwarding table
  • forwarding table只通过IP地址来进行forward pkt

SDN:提供更灵活的Control and Data Plane

  • 以用自己的算法来编程
  • 可以使用pkt header中的任意一部分来forwarding

SDN如何运转

Data Plane

Controller发出一串的"match-action"规则来对pkt做任何东西

好处:更灵活了

Control Plane

不是分散式系统(不是每一个Router上都有),只在中心化的中间一个点上

好处:可编程;可创造自己的算法并在网络上试验

Generalized Forwarding and SDN 综述

image-20211206193208365

OpenFlow data plane abstraction

什么是OpenFlow

OpenFlow是一种特定的SDN协议

flow由header部分来定义

Generalized Forwarding

一种简单的pkt-handling规则

  • Pattern:匹配pkt header中的值
  • Actions: for matched pkt:drop, forward, modify已经匹配到的包或者发pkt到controller
  • Priority:消除歧义
  • Conter:bytes的序号

image-20211206193503628

*为通配符

Flow Table实体

image-20211206193621862

OpenFlow 例子

image-20211206193755804

OpenFlow概述

能做的:match-action(基本上就是可以做任何事)

maction-action: different kinds of devices become one

image-20211206193932744

4.x总结

image-20211206194017927

Network Control Plane

5.1 introduction

Routing的目标:定义一条从发送源到接收端的好路线

  • 路线:一连串的router
  • 好:最小的cost,最快,最小的congested

Routing的抽象画

image-20211206194228362

Cost抽象化

每一个线路cost求和

image-20211206194244917

Router算法的分类

global or decentralized information?

Global:

  • 所有路由器都有完整的拓扑结构,链路成本信息
  • "link state"算法

decentralized:

  • 路由器知道物理连接的邻居,到邻居路由器的链路成本
  • 迭代计算过程,与邻居交换信息
  • "distance vector"算法
static or dynamic?

static:

  • routes这个过程基本不变

dynamic:

  • routes这个过程变得很快
    • 周期性变化
    • link cost发生变化后也发生变化

5.2 Routing Protocols

Link-state routing algorithm

Dijkstra’s alogorthm

特点:

  • net topology, link costs known to all nodes
  • computes least cost paths from one node to all other nodes
  • algorithm complexity : O ( n 2 ) O(n^2) O(n2) , more efficient implementations possile : O ( n l o g n ) O(nlogn) O(nlogn)

全部的node都知道link cost

  • 算法完成通过link state broadcast
  • 全部的node都有相同的info

计算从一个node到另一个node的最小path cost

  • 结果:产生单独点的forwarding table

Notation:

C ( X , Y ) C(X,Y) C(X,Y):从x到y的link cost

D ( v ) D(v) D(v):当前已知的源头到v点的cost值,

p ( v ) p(v) p(v):从源到v的路径上的前任节点的cost path之和。不相连为∞

N ′ N' N:最小代价路径确定已知的节点集

算法详解

画表,找每一行中最小的值,将其点添加到该行结果当中。

进入下一行

image-20211206195416534

算法讨论

复杂度: O ( n 2 ) O(n^2) O(n2)(有更低的复杂度: O ( n l o g n ) O(nlogn) O(nlogn)

如果cost变了,会造成变化

Distance vector routing algorithm

Bellman-Fold equation(dynamic programming)

特点:

  • dynamic programming
  • each node sends it own distance vector estimate to neighbors from time-to-time
  • when x receives new DV estimate from neighbor, it updates its own DV using B-F equation
  • iterative asynchronous: each local iteration caused by local link cost change or DV update message from neighbor
  • distributed: each node notifies neighbors only when its DV changes

image-20211206195847820

Bellman-Ford例子

image-20211206195909416

Distance vector algorithm

算法:

image-20211206200038474

image-20211206200101089

特点:

image-20211206200121515

每一个结点都会有一个自己导向全部点的Table:

image-20211206200149712

link cost发生变化时会发生什么
high -> low

由结点检测本地的link cost发生变化

更新routing info,重新计算distance vector

如果DV发生变化,则通知邻居

low -> high

由结点检测本地的link cost发生变化

poisened reverse

5.3 intra-AS routing in the Internet OSPF

是routing有更高的扩展性

scale:

  • 不再在routing table中存储全部的目的地
  • 路由表交换将淹没链接

administrative autonomy:(行政自治权)

  • internet = network of networks
  • 每一个小的network都能管理自己这一部分小的network

AS Autonomous System

“autonomous systems” (AS) (a.k.a “domain”) 是internet中一块大的区域

AS内部的routing:

  • 仅对在同一个AS下的host,router进行routing
  • 每一个AS下的都必须使用同一个intra-domain protocol
  • 不同AS可以使用不同的AS内routing协议
  • gateway router:在每一个AS边缘的router(于其他AS相连的router)

AS之间的routing:

  • 在不同的AS之间routing
  • 就是在不同的gateway router中routing

大层走大层(inter AS)的protocol,小层走小层(intra AS)的protocol

AS的routing table

forwarding table由intra-以及inter-AS共同算出来

Inter-AS tasks

gateway router要知道如何去到其他的AS中

例如:如果在AS1中的router接收到了AS1外的消息,那么AS1必须知道消息是从AS2还是从AS3中来的,并将此可达性信息传播到AS1中的所有路由器

image-20211206201702567

Intra-AS Routing

也被称为**interior gateway protocols(IGP)**

通常使用的intra-AS routing协议

image-20211206201756173

OSPF (Open Shortest Path First)

“open”: 公开的

使用link state算法实现

  • link state pkt相互传播
  • 每一个node都有topology map
  • 使用Dijkstra’s 算法计算

路由器向整个自治系统(AS)内所有其他路由器发送OSPF的链路状态通告

  • 直接通过IP(而不是TCP或UDP)在OSPF消息中携带
  • link state: 指的是对于每一个attached住的link

**IS-IS routing协议:**几乎与OSPF相同

OSPF 高级功能
  1. 安全性:验证所有OSPF消息(防止恶意入侵)

  2. 可以同时具有多条同样cost的path(在RIP中之只能有一条)

  3. 对于每个链路,不同TOS的多个成本指标(例如,卫星链路成本为最佳努力TOS设置较低;实时ToS的高值) TOS:服务条款

  4. 集成的单投和多投支持:多播OSPF (Multicast OSPF)与OSPF使用相同的拓扑数据库

  5. 在大的域中,OSPF能够分层(hierarchical)

5.4 Routing among the ISPs: BGP

Internet inter-AS routing BGP

BGP (Border Gateway Protocol) AS之间的routing协议

BGP为每个AS提供了一种方式:

  • eBGP:连接不同AS之间的router,拥有连接相邻不同AS的可到达性信息
  • iBGP:连接AS内Router的,传播可达性信息给所有内部as路由器。
  • 定义good route

允许每一个子网内向其余的网络说:我在这

image-20211206204129658

BGP基本

**BGP session:**两个BGP的router在半永久的TCP连接中交换BGP信息

  • 向每一个终端网络advertise path prefixes

例子:当AS3的gateway router 3a向AS2的gateway router 2C advertise 到X的path信息时,AS3向AS2保证其会forward datagrams到X处

image-20211206204541749

路径属性以及BGP routes

分发的prefix包括BGP的属性:

  • prefix + attributes = route

两个重要的attribute:

  • AS-PATH:列出prefix分发过程中经过的全部的ASes
  • NEXT-HOP:指定到下一个AS中的router

Policy-based routing

  • gateway收到route的分发后,使用import policy来接收或者删除路径
  • AS策略决定是否向其他相邻AS通告路径

BGP 路经分发

image-20211206205003572

  • AS2的router 2从接收到来自AS3的router 3a 分发的路径 AS3,X(通过eBGP)
  • 基于AS2的policy,AS2的router 2c接受AS3,(通过iBGP)传播到所有AS2路由器
  • 基于AS2的policy,AS2的router 2a 通过eBGP分发路径AS2,AS3,X到AS1的router 1c

多路径分发 —— AS3多了一条到AS1的

image-20211206205252392

BGP路径选择

路由器可能会得到超过一条到终点AS的path,需要根据一下原则进行选择

  1. local preference value attribute: policy decision
  2. shortest AS-PATH
  3. closest NEXT-HOP router: hot potato routing
  4. additional criteria(附加标准)

BGP Test

image-20211206205444527

5.5 The SDN control plane

回顾

per-router control plane

image-20211206205527479


logically centralized control plane

image-20211206205609460

SDN Software defined networking

逻辑击中控制平面

  • 更简单的网络管理,为了避免路由器错误配置,对于交通流来说更方便
  • table-based forwarding(OpenFlow API),允许编程路由器
    • 中心化编程更容易,中心计算table并分发
    • 分布式编程更困难
  • 开放式应用control plane(可以应用在全部的router上)

传统路由器遇到的问题

image-20211206210154881

SDN整体架构图

  1. 路由器回传
  2. control plane与data plane分离
  3. control plane功能在数据平面交换机之外
  4. 可编程的控制程序

image-20211206210221606

Data plane switches

  • 交换机以硬件形式,实现广义的数据平面转发
  • 交换流表被控制器计算得到并安装在交换机中
  • 交换机有以表为基础的交换控制(例如OpenFlow,减缓及和中心控制器交换协议)的API,它定义了什么式可控制的什么是不可控制的

image-20211206210421140

SDN Controller

SDN控制器(网络的操作系统)

  1. 功能

    1. 保存网络状态信息
    2. 通过北向接口(northbound API)与网络控制应用交互
    3. 通过南向接口(southbound API)与网络交换机交互
    4. 作为具有管理性能、规模扩展、错误容忍、鲁棒性的分配系统
  2. 协议

    用来与交换机和应用联系①北向协议(应用apps)②南向协议(交换机switches)

image-20211206210559465

Network-control apps

网络控制应用(控制的大脑)

  • 用低等级服务、SDN控制器提供的接口来执行控制功能
  • Unbundled分算的,应用功能谁写都行

image-20211206210909028

OpenFlow Protocol

不讲运行的细节

  • 用来操作控制器和交换机之间的交流
  • TCP被用来交换信息(可以选择加密)
  • 信息类型(主要):
    • 控制器向交换机
    • 交换机到控制器

image-20211206211049079

SDN 控制/数据平面交互例子

image-20211206211112437

① s1发生链路错误,用OpenFlow接口状态信息告诉控制器

② SDN控制器接收到了OpenFlow信息,更新链路状态信息

③ Dijkstra’s routing algorithm被调用

④ Dijkstra’s routing algorithm访问网络图信息和链路状态信息,计算新的路由

⑤ 链路状态由应用与SDN控制器中的流表计算组件进行交互,计算新流表(flow table)

⑥ 控制机用OpenFlow在交换机中安装新的需要更新的表

描述OpenFlow和使用link-state来routing的传统方法的区别

image-20211206211636385

5.6 ICMP The Internet Control Message Protocol

交流network layer的

用于在host和router之间交换网络层的信息

  • 错误报告(无法到达的主机、网络、接口、协议)
  • 回复请求(echo reportin ---- ping)

在IP上层的网络层 -> ICMP的信息包含了IP数据datagram(ICMP是IP实现的必需部分)

ICMP信息:类型如下图,代码数据加上IP datagram 的前8字节导致错误

image-20211206212519064

ICMP实现过程

  1. 源发送一系列的UDP数据段到目的地,这些数据段里包含着一个不可能的接口数字(用来返回不可到达的信息)。首先第一组数据的TTL为1,到达第一个路由器(first hop)后超时,被路由器丢弃,同时路由器返回源一个ICMP的信息(type 11, code 0) -> TTL超时,源由此得到该路由器的名字和地址,并记录RTT
  2. 随后在不断的发送中,TTL时间会不断递增,能到达的路由器越来越远,也能够不断获得地址
  3. 知道UDP数据段到达目标主机时,目标主机因为不可能的接口数组返回(type 3, code 3) -> 接口无法到达的ICMP信息(“port unreachable”),源就此停止发送

image-20211206212914819

Tracerouter 路由追踪

⽤ ICMP定位⽤户的计算机和⽬标计算机之间的所有路由器(即他们的IP地址、到达下⼀个路由器的时间)
e.g. 跳转到不同的⽹络——是因为路由器被设定不允许做出响应⼀旦中间路由器出现连接问题,后⾯的跳转信息都不会显示,就能判断哪⾥有问题

image-20211206213005387

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这不是Ourz的ID

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值