Can201-Introduction to Networking:Data Plane数据平面
目录
0.IP协议:IP数据报格式IP datagram format
1.IP地址:IP addressing:
1.1介绍 introduction
1.2 子网Subnets
1.3 IP地址类别
1.4获取IP地址方式
1.4.1动态主机配置协议(DHCP)Dynamic Host Configuration Protocol
1.5 IP地址分配方案:
2.NAT:网络地址转换network address translation
2.1使用NAT原因:
2.2 NAT的工作方式:
2.3 NAT的好处
2.4 NAT转换表。
2.5 NAT的争议与解决方案:
3.IPv6
3.1改进原因:
3.2 IPv6数据报格式:IPv6 datagram format:
3.3 与IPv4的改变:
3.4过渡(IPv4 --> IPv6 )
4.软件定义网络(SDN)(网络平面)
4.1 一般化转发:简单的数据包处理规则Generalized forwarding: simple packet-handling rules
4.2流表条目模型: OpenFlow
0.IP协议:IP数据报格式IP datagram format
- 服务类型(ToS)Type of service(Data + ECN)
*****DSCP是IP头部中的一个6位字段,用于标记数据包的优先级。它与ECN(Explicit Congestion Notification)字段一起使用,可以提供网络拥塞的反馈
·标准(Standard): DSCP值为0,通常用于普通数据流。
·低优先级数据(Low-priority data): DSCP值为8,用于不太关键的数据传输,如文件传输(FTP, SMB)。
·网络运营、管理和维护(Network operations, administration and management, OAM): DSCP值为16,用于网络管理流量,如SNMP, SSH, Ping, Telnet, syslog。
·广播视频(Broadcast video): DSCP值为24,用于视频流,如RTSP广播电视、视频监控、视频点播。
·实时交互(Real-time interactive): DSCP值为32,用于需要快速响应的应用,如在线游戏、低优先级视频会议。
·信令(Signaling): DSCP值为40,用于信令流量,如SIP, H.323, H.248, NTP。
·网络控制(Network control): DSCP值为48,用于路由协议,如OSPF, BGP, ISIS, RIP
·保留供将来使用(Reserved for future use): DSCP值为56,保留用于将来的用途。
- IP分片与重组IP fragmentation, reassembly
·网络链路具有MTU(最大传输单元)——最大可能的链路层帧大小。Network links have MTU (max.transfer size) - largest possible link-level frame
>不同的链路类型具有不同的MTU。Different link types, different MTUs
·大型IP数据报在网络内部被分割(“分片”)。Large IP datagram divided (“fragmented”) within net
>一个数据报变成几个数据报。One datagram becomes several datagrams
>仅在最终目的地进行“重组”。“Reassembled” only at final destination
>使用IP头部位来识别和排序相关分片。IP header bits used to identify, order related fragments
1.IP地址:IP addressing:
1.1介绍 introduction
- 接口:主机/路由器与物理链路之间的边界 Interface: the boundary between host/router and physical link
·主机通常有一个或两个接口(例如,有线以太网,无线802.11)Host typically has one or two interfaces (e.g., wired Ethernet, wireless 802.11)
·路由器通常有多个接口 Router typically has multiple interfaces
- 每个接口都与IP地址相关联(而不是与包含该接口的主机或路由器相关联)。IP addresses associated with each interface (rather than with the host or router containing that interface).
- IP地址:用于主机和路由器接口的32位标识符。IP address: 32-bit identifier for host and router interface
·有线以太网接口通过以太网交换机连接。Wired Ethernet interfaces connected by Ethernet switches
·无线Wi-Fi接口通过Wi-Fi基站连接。Wireless WiFi interfaces connected by WiFi base station
1.2 子网Subnets
- IP地址,由两部分组成:IP address, two parts:
·子网部分 - 高位部分Subnet part - high order bits
·主机部分 - 低位部分Host part - low order bits
- 子网定义
·设备接口的IP地址具有相同的子网部分,它们可以被视为在同一个子网中。Device interfaces with same subnet part of IP address
·可以在没有中间路由的情况下相互物理到达。Can physically reach each other without intervening router
- /24子网掩码:如果假设所有子网掩码都是/24,这意味着网络部分占据了IP地址的前24位,最后8位用于主机。在这种情况下,每个子网可以有256个IP地址(2^8),其中2个地址(网络地址和广播地址)通常不分配给主机。
- 方法Recipe
·要确定子网,将每个接口从其主机或路由器上分离,以创建孤立的网络。To determine the subnets, detach each interface from its host or router to create isolated networks.
·每个孤立的网络被称为一个子网。Each isolated network is called a subnet.
1.3 IP地址类别
- 有类地址分配Classful addressing
·IP地址的网络部分被限制为8位、16位或24位长度。
The network portion of an IP address were constrained to be 8, 16, or 24 bits in length.
·具有8位、16位和24位子网地址的子网分别被称为A类、B类和C类网络。
Subnets with 8-, 16-, and 24-bit subnet addresses were known as class A, B and C networks
·这变得有问题
>一个C类(/24)子网只能容纳最多2^8 - 2 = 254个主机A class C (/24) subnet could accommodate only up to 2 8 − 2 = 254 hosts
>一个B类(/16)子网支持2^16 - 2 = 65,534个主机,这太大了A class B (/16) subnet supporting 216 – 2 = 65,534 hosts, which is too large Under classful addressing, an organization with 2,000 hosts,
- 无类域间路由(CIDR)Classless Inter Domain Routing
·地址的子网部分可以有任意长度Subnet portion of address can have arbitrary length
·地址格式:a.b.c.d/x,其中x是地址子网部分的位数Address format: a.b.c.d/x, where x is # bits in subnet portion of address
>网络名称与地址格式Network name with address format::a.b.c.0/x
>子网掩码Subnet mask:/x
>网络前缀Network prefix:x
1.4获取IP地址方式
- 由系统管理员在文件中硬编码Hard-coded by system admin in a file
·Windows: 控制面板->网络->配置->TCP/IP->属性
·UNIX: /etc/rc.config
- DHCP(动态主机配置协议):从服务器动态获取地址
DHCP: Dynamic Host Configuration Protocol: dynamically get address from as server
·“即插即用”或零配置协议 plug-and-play” or zeroconf protocol
>因为DHCP能够自动化连接主机到网络的网络相关方面。because of DHCP’s ability to automate the network-related aspects of connecting a host into a network.
- IP地址的子网部分获取:从其提供商ISP的地址空间中分配一部分gets allocated portion of its provider ISP’s address space
1.4.1动态主机配置协议(DHCP)Dynamic Host Configuration Protocol
- 目标:允许主机在加入网络时从网络服务器动态获取其IP地址Goal: allow host to dynamically obtain its IP address from network server when it joins network
·可以续租正在使用的地址Can renew its lease on address in use
·允许地址重用(仅在连接/“开机”时持有地址)Allows reuse of addresses (only hold address while connected/“ on ”)
·支持想要加入网络的移动用户,他们可能需要频繁地加入和离开网络Support for mobile users who want to join network (more shortly)
- DHCP过程概述
·DHCP发现(DHCP Discover):
>主机(客户端)通过广播发送DHCP发现消息,以查找网络上的DHCP服务器。
·DHCP提供(DHCP Offer):
>DHCP服务器接收到发现消息后,提供一个IP地址和其他网络配置信息,通过DHCP提供消息广播回客户端。
·DHCP请求(DHCP Request):
>客户端选择一个提供,发送DHCP请求消息给服务器,请求分配的IP地址和其他配置信息。
·DHCP确认(DHCP Ack):
>DHCP服务器确认请求,通过发送DHCP确认消息,正式分配IP地址给客户端
- DHCP的客户端-服务器场景client-server scenario
- DHCP 不仅可以返回分配的 IP 地址,还可以在子网上提供以下信息:DHCP can return more than just allocated IP address on subnet:
·客户端的下一跳路由器地址(即网关)Address of first-hop router (a.k.a. gateway) for client
·DNS服务器的名称和IP地址Name and IP address of DNS sever
·网络掩码(指示地址的网络部分和主机部分) Network mask (indicating network versus host portion of address)
1.5 IP地址分配方案:
- 分层地址Hierarchical addressing:路由聚合 route aggregation
·分层地址允许高效地发布路由信息:Hierarchical addressing allows efficient advertisement of routing information:
·使用单个前缀来广告多个网络的能力通常被称为地址聚合或路由聚合。The ability to use a single prefix to advertise multiple networks is often referred to as address aggregation or route aggregation.
- ISP获得地址块方式:
·ICANN:互联网名称与数字地址分配机构 http://www.icann.org/ICANN: Internet Corporation for Assigned Names and Numbers
>分配地址 Allocates addresses
>管理DNS Manages DNS
>分配域名,解决争议 Assigns domain names, resolves disputes
2.NAT:网络地址转换network address translation
2.1使用NAT原因:
- 地址分配的灵活性:当一个子网(subnet)的规模扩大时,如果互联网服务提供商(ISP)已经分配了地址范围的连续部分,那么更改分配的地址块就变得困难。NAT允许网络管理员在不影响现有网络结构的情况下,灵活地管理IP地址。
- 地址需求的不确定性:网络管理员很难在一开始就准确估计未来需要多少IP地址。NAT通过允许多个设备共享一个公共IP地址,有效地解决了这个问题。
2.2 NAT的工作方式:
- 内部网络地址:在家庭或小型办公网络中,内部设备(如电脑、手机、打印机等)通常被分配私有IP地址,如图中的10.0.0.0.1、10.0.0.0.2和10.0.0.0.3。这些地址在互联网上是不可路由的,因此需要NAT来转换。
- 公共IP地址:家庭或小型办公网络通常只有一个或少数几个公共IP地址。在图中,公共IP地址是138.76.29.7,这是路由器的外部接口地址。
- 数据包的转换:当内部网络中的设备需要与互联网通信时,路由器会将这些设备发出的数据包的源地址转换为公共IP地址138.76.29.7。为了区分来自不同内部设备的数据,路由器会使用不同的源端口号。
- 端口号的作用:NAT通过端口号来区分来自不同内部设备的数据包。每个内部设备的数据包在发送到互联网时,都会映射到公共IP地址的不同端口上。当响应返回时,路由器会根据端口号将数据包正确地转发回原始的内部设备
·16位端口号字段:可以使用单个局域网侧地址同时建立60,000个连接!60,000 simultaneous connections with a single LAN-side address!
2.3 NAT的好处
- 单一公共IP地址:
·本地网络在外部世界(即互联网)看来只使用一个公共IP地址。local network uses just one IP address as far as outside world is concerned:
- 地址资源节省:
·不需要从ISP获取一系列IP地址,所有设备共享一个公共IP地址。Range of addresses not needed from ISP: just one IP address for all devices
- 灵活性:
·可以在不影响外部通信的情况下,更改本地网络中设备的私有IP地址。Can change addresses of devices in local network without notifying outside world
- ISP更换的便利性:
·可以在不更改本地网络中设备地址的情况下更换ISP。Can change ISP without changing addresses of devices in local network
- 安全性:
·本地网络内的设备对于外部世界来说不是直接可寻址或可见的,这增加了安全性。Devices inside local net not explicitly addressable or visible by outside world (a security plus)
2.4 NAT转换表。
- 实现:
·在NAT转换表中记住每一个(源IP地址,端口号)到(NAT IP地址,新端口号)的转换对。Remember (in NAT translation table) every (source IP address, port #) to (NAT IP address, new port #) translation pair
·出站数据报:替换每个出站数据报的(源IP地址,端口号)为(NAT IP地址,新端口号)。Outgoing datagrams: replace (source IP address, port #) of every outgoing datagram to (NAT IP address, new port #)
>远程客户端/服务器将使用(NAT IP地址,新端口号)作为目的地地址进行响应。remote clients/servers will respond using (NAT IP address, new port #) as destination addr
·入站数据报:将每个入站数据报的目的字段中的(NAT IP地址,新端口号)替换为NAT表中存储的相应的(源IP地址,端口号)。Incoming datagrams: replace (NAT IP address, new port #) in dest fields of every incoming datagram with corresponding (source IP address, port #) stored in NAT table
- 示例:
1)主机10.0.0.1向128.119.40.186发送数据报,端口80。
host 10.0.0.1 sends datagram to 128.119.40.186, 80
2)NAT路由器将数据报的源地址从10.0.0.1, 3345更改为138.76.29.7, 5001,并更新表。
NAT router changes datagram source addr from 10.0.0.1, 3345 to 138.76.29.7, 5001, updates table
3)回复到达,目的地地址为138.76.29.7, 5001。
reply arrives dest. address: 138.76.29.7, 5001
4)NAT路由器将数据报的目的地址从138.76.29.7, 5001更改为10.0.0.1, 3345。
NAT router changes datagram dest addr from 138.76.29.7, 5001 to 10.0.0.1, 3345
2.5 NAT的争议与解决方案:
- 争议1:路由器应该只处理到第3层(网络层)。而NAT涉及到传输层(第4层)的端口号,这超出了传统路由器的职责范围。Routers should only process up to layer 3
·解决方案:地址短缺应该通过IPv6来解决。因为IPv6提供了几乎无限的地址空间
Address shortage should be solved by IPv6
- 争议2:违反了端到端通信原则。NAT的可能性必须被应用设计者考虑,例如,P2P应用。在NAT后的对等方只能作为客户端而不是服务器工作。Violates end-to-end argument. NAT possibility must be taken into account by app designers, e.g., P2P applications. A peer behind NAT can only work as a client rather than a server.
·解决方案:NAT穿越
>涉及到端口映射,即在NAT设备上设置规则,允许外部请求通过特定的端口号连接到内部的服务器。
3.IPv6
3.1改进原因:
- 32位地址空间很快将被完全分配。
32-bit address space soon to be completely allocated.
- 头部格式有助于加快处理/转发速度。Header format helps speed processing/forwarding
- 头部变更以便于QoS(服务质量)。Header changes to facilitate QoS
3.2 IPv6数据报格式:IPv6 datagram format:
- 特性:
·固定长度40字节的头部。Fixed-length 40 byte header
·不允许在中间路由器进行分片(参见“ICMP新消息类型‘包太大’”)。No fragmentation allowed (at intermediate routers, see “packet too big” new ICMP message type)
- 图示:
·优先级(流量类别):在数据流中识别数据报的优先级。Priority (Traffic Class): identify priority among datagrams in flow
·流标签:识别同一“流”中的多个数据报。Flow Label: identify datagrams in same “flow.”
·下一个头部:识别数据的上层协议。Next header: identify upper layer protocol for data
·有效载荷长度payload len:指数据部分的长度
·跳数限制hop limit:类似于IPv4中的TTL(Time to Live),用于防止数据包在网络中无限循环。
3.3 与IPv4的改变:
- ICMPv6:ICMP的新版本。new version of ICMP
·没有分片或重组。No Fragmentation or reassembly
·如果路由器收到的IPv6数据报太大,无法通过外出链路转发,路由器将直接丢弃该数据报,并向发送方发送一个“ICMP错误消息:包太大”。If an IPv6 datagram received by a router is too large to be forwarded over the outgoing link, the router simply drops the datagram and sends a “Packet Too Big” ICMP error message back to the sender.
- 校验和:完全移除,以减少每个跳点的处理时间。Checksum: removed entirely to reduce processing time at each hop
·因为互联网层中的传输层(例如TCP和UDP)和链路层(例如以太网)协议执行校验和计算。Because the transport-layer (for example, TCP and UDP) and link-layer (for example, Ethernet) protocols in the Internet layers perform check summing.
- 选项:允许,但不在头部内,可以通过“下一个头部”字段指示。Options: allowed, but outside of header, can be indicated by the “Next Header” field
3.4过渡(IPv4 --> IPv6 )
- 隧道技术:IPv6数据报作为IPv4数据报的有效载荷在IPv4路由器之间传输(在IPv4数据报中将协议编号字段设置为41)。Tunneling: IPv6 datagram carried as payload in IPv4 datagram among IPv4 routers (set the protocol number field in IPv4 datagram at 41)
·在两个IPv6路由器之间的一系列IPv4路由器作为一个隧道。The intervening set of IPv4 routers between two IPv6 routers as a tunnel
4.软件定义网络(SDN)(网络平面)
4.1 一般化转发:简单的数据包处理规则Generalized forwarding: simple packet-handling rules
- 流:由一组头部字段定义的数据包序列Flow: defined by header fields
·这些头部字段可以包括源IP地址、目的IP地址、协议类型、源端口号、目的端口号等
- 模式和动作
·模式:匹配数据包头部字段中的值Pattern: match values in packet header fields
·动作:当数据包与某个模式匹配时,将执行相应的动作。这些动作可以是:
>丢弃(Drop):数据包被丢弃,不进行转发。
>转发(Forward):数据包被转发到指定的端口或下一跳。
>修改(Modify):数据包的某些字段被修改,然后转发。
>发送到控制器(Send to Controller):数据包被发送到SDN控制器进行进一步处理。
- 优先级:在流表中可能存在多个匹配规则,优先级用于解决规则之间的冲突。优先级高的规则优先被应用。
- 计数器:流表中的计数器用于跟踪与特定模式匹配的数据包的数量和字节数,这有助于网络管理员监控和分析网络流量。
- 流表:Flow table
·由控制器计算和分发computed and distributed by controller
·定义了网络设备(路由器)的匹配+动作规则。define router’s match + action rules
4.2流表条目模型: OpenFlow
- OpenFlow是一个开放标准,允许网络设备通过流表来定义如何处理网络流量。
- 流表条目Flow Table Entries
·Rule(规则):这是流表中的一个匹配条件,用于识别数据包的特定属性,如源IP地址、目的IP地址、端口号、协议类型等。
·Action(动作):当数据包与流表中的规则匹配时,将执行的动作。动作可以是流表的核心,决定了数据包的处理方式。
·Stats(统计):流表可以记录与流表条目匹配的数据包的统计信息,如数据包数量、字节数等,这对于网络监控和分析非常有用。
> Packet + byte counters(数据包+字节计数器):这是与流表条目关联的计数器,用于跟踪匹配该条目的数据包和字节数。
- 示例:
·基于目的地转发(路由器)Destination-based forwarding
> 所有源IP地址为51.6.0.8的数据包,无论其目的地址、协议或端口号如何,都应该被转发到路由器的输出端口6
·基于目的地的二层转发(交换机Destination-based forwarding
> 所有源MAC地址为22:A7:23:11:E1:02的二层帧应该被转发到输出端口3
·防火墙
>丢弃所有目的TCP端口为22的数据包,这是一种常见的防火墙策略,用于阻止特定服务的访问。
>允许所有源MAC地址为128.119.1.1的数据包通过,而不考虑其目的地址、协议或端口号。
- 不同类型的设备和它们的OpenFlow规则
·路由器 Router
>匹配:最长目的IP前缀 match: longest destination IP prefix
>动作:通过一个链路转发 action: forward out a link
·交换机 Switch
>匹配:目的MAC地址 match: destination MAC address
>动作:转发或泛洪 action: forward or flood
·防火墙 Firewall
>匹配:IP地址和TCP/UDP端口号match: IP addresses and TCP/UDP port numbers
>动作:允许或拒绝 action: permit or deny
·NAT(网络地址转换)
>匹配:IP地址和端口 match: IP address and port
>动作:重写地址和端口 action: rewrite address and port
- 示例: