网络协议报文格式大集合

上传人:20****08 文档编号:61139698 上传时间:2022-03-10 格式:DOCX 页数:27 大小:580.92KB
返回 下载 相关 举报
网络协议报文格式大集合_第1页
第1页 / 共27页
网络协议报文格式大集合_第2页
第2页 / 共27页
网络协议报文格式大集合_第3页
第3页 / 共27页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上目 录专心-专注-专业1 序、1.1 协议的概念协议由语法、语义和时序三部分组成:语法:规定传输数据的格式;语义:规定所要完成的功能;时序:规定执行各种操作的条件、顺序关系;1.2 TCP/IP体系结构TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。本课程实验中相关协议的层次分布如附图3-1所示。图1-1 TCP/IP协议层次这些协议之间的PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2显示了Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、OSPF报文和FTP报文之间的封装关系。图1-2 各协议PDU间的封装关系2 链路层协议报文格式2.1 Ethernet报文格式最新的IEEE 802.3标准(2002年)中定义Ethernet帧格式如下:图2-1 以太网报文格式l 其中,类型/长度值小于1536(0x0600)时表示数据字段的长度,大于等于1536(0x0600)时表示数据字段的协议类型。类型/长度值0x0800表示帧中封装的数据为IP分组,类型值0x0806表示帧中封装的数据为ARP分组。l Ethernet II类型以太网帧的最小长度为64字节(662464)最大长度为1518字节(66215004)。其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)l 接下来的2个字节标识出以太网帧所携带的上层数据类型,如下:IPv4: 0x0800ARP:0x0806PPPoE:0x8864802.1Q tag: 0x8100 IPV6: 0x86DDMPLS Label:0x8847l 在不定长的数据字段后是4个字节的帧校验序列(Frame. Check Sequence,FCS)2.2 802.1q VLAN数据帧(4字节)图2-2 VLAN数据帧结构l Type:长度为2字节,取值为0x8100,表示此帧的类型为802.1Q Tag帧。l PRI:长度为3比特,可取07之间的值,表示帧的优先级,值越大优先级越高。该优先级主要为QoS差分服务提供参考依据(COS)。l CFI 字段标识MAC 地址在不同的传输介质中是否以标准格式进行封装,长度为1bit,取值为0 表示MAC 地址以标准格式进行封装,为1 表示以非标准格式封装,缺省取值为0l VLAN Identifier (VID) : 长度12bits,可配置的VLAN ID取值范围为14094。通常vlan 0和vlan 4095预留,vlan1为缺省vlan,一般用于网管。2.3 QinQ帧格式 图2-3 QinQ帧结构2.4 PPP帧格式图2-4 PPP帧格式PPP报文的内容是指Address、Control、Protocol和Information四个域的内容。各字段的含义如下。l Flag域Flag域标识了一个物理帧的起始和结束,该字节为0x7E。l Address域PPP协议是被运用在点对点的链路上,它可以唯一标识对方。因此使用PPP协议互连的两个通信设备无须知道对方的数据链路层地址。所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。l Control域同Address域一样,PPP数据帧的Control域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。Address和Control域一起表示了此报文为PPP报文,即PPP报文头为FF03。l Protocol域协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。图2-5 Protocol协议域l Information域信息域最大长度是1500字节,其中包括填充域的内容。信息域的最大长度等于PPP协议中MRU(Maximum Receive Unit)的缺省值。2.5 STP协议格式2.5.1 语法图2-6 STP报文格式以太网报文头:l 目的mac地址 目的地址是一个固定的桥的组播地址(0x0180c)l 源MAC地址 即发送该配置消息的桥MAC地址l 长度/类型 这里表示帧长l LLC Header 固定的链路头-0xl Payload BPDU数据BPDU数据:l Protocol ID 恒为0。 l Version 恒为0。 l Type 决定该帧中所包含的两种 BPDU 格式类型(配置 BPDU 或 TCN BPDU)。 l Flags 标志活动拓朴中的变化,包含在拓朴变化通知(Topology Change Notifications)的下一部分中。如下图:STP只使用了第0和第7比特位。图2-7 STP报文的flags字段 l Root BID 包括有根网桥的网桥 ID。会聚后的网桥网络中,所有配置 BPDU 中的该字段都应该具有相同值(单个 VLAN)。NetXRay 可以细分为两个 BID 子字段:网桥优先级和网桥 MAC 地址。 l Root Path Cost 通向有根网桥(Root Bridge)的所有链路的积累资本。 l Sender BID 创建当前 BPDU 的网桥 BID。对于单交换机(单个 VLAN)发送的所有 BPDU 而言,该字段值都相同,而对于交换机与交换机之间发送的 BPDU 而言,该字段值不同) l Port ID 每个端口值都是唯一的。端口1/1值为08001,而端口1/2 值为08002。 l Message Age 记录 Root Bridge 生成当前 BPDU 起源信息的所消耗时间。 l Max Age 保存 BPDU 的最长时间,也反映了拓朴变化通知(Topology Change Notification)过程中的网桥表生存时间情况。 l Hello Time 指周期性配置 BPDU 间的时间。 l Forward Delay 用于在 Listening 和 Learning 状态的时间,也反映了拓朴变化通知(Topology Change Notification)过程中的时间情况。2.5.2 语义常用概念:l 根桥(Root Bridge):桥ID最小的网桥。其中桥ID是由网桥的优先级和网桥的MAC组成l 根端口(Root Port):这个端口到达根桥的路径是该端口所在网桥到达根桥的最佳路径。全网中只有根桥是没有根端口的l 指定端口(Designated Port):每一个网段选择到根桥最近的网桥作为指定网桥,该网桥到这一网段的端口为指定端口l 可选端口(Alternate Port):既不是指定端口,也不是根端口的端口Stp做了些什么:l STP在二层交换网络中选择一个根桥作为全部二层交换网络的逻辑中心(Root Bridge)l STP为全网中每一个参与STP运算的交换机计算到达根桥的最短距离(Path Cost)l 检测二层交换网络中存在的冗余链路,并把他们置于阻断/备份状态l 检测拓扑结构的变化并根据情况计算新的生成树如何确定跟桥:l 根桥BID(网桥ID)最小的网桥定为根桥l BID网桥的优先级+网桥MACl 网桥的优先级为可配置,缺省值为32768l 在缺省情况下,根桥将由MAC地址最小的网桥担任如何确认到根桥的PATH COST:l 到根桥的PATH COST = 收到最优配置消息中的ROOT PATH COST + 收到配置消息的该接口的开销l Path Cost的两种定义标准SpeedLink type802.1D cost802.1t cost10MbpsHalf Duplex1002,000,000Full Duplex951,999,999Aggregated link901,000,000100MbpsHalf Duplex19200,000Full Duplex18199,999Aggregated Link15100,0001000MbpsFull Duplex420,000Aggregated Link310,000如何决定BPDU配置消息的优劣:l 比较RID(Root Bridge ID),确定网络同步l RID相同,比较Path Cost(到根桥距离),越小越优l RID/Path Cost相同,比较指定桥的BID (Designated Bridge ID),越小越优l RID/Path Cost/DBID相同,比较指定端口的ID (Designated Port ID),越小越优确定网桥端口角色:l BPDU报文中总是携带网桥到根桥的最优值l 通过BPDU配置消息来决定端口的角色l 根端口:网桥各个端口中到根桥最近的端口l 指定端口:网桥的端口发送的BPDU配置消息较接收的BPDU配置消息更优,则端口为指定端口l 可选端口:网桥的端口发送的BPDU配置消息较接收的BPDU配置消息更差,则端口为可选端口STP端口状态:l disabled:不收发任何报文l Blocking: 不接收或转发数据,接收但不发送BPDU,不进行地址学习l Listening:不接收或转发数据,接收并发送BPDU,不进行地址学习l Learning:不接收或转发数据,接收并发送BPDU,开始地址学习l Forwarding:接收并转发数据,接收并发送BPDU,进行地址学习拓扑改变:l 拓扑结构改变会使站点在生成树中的相对位置发生移动,那么网桥原来学习到的MAC地址信息就可能变得不正确,所以学习的MAC地址信息也要有生存期,如果该时间内没有证明地址的正确,则抛弃这条地址信息l MAC地址在STP中有两个生存期:l 拓扑稳定的时候用较长的生存期l 拓扑改变的时候用较短的生存期l 网络拓扑发生改变的时候,并不是所有的网桥都能够发现这一变化,所以需要把拓扑改变的信息通知到整个网络拓扑改变消息的传播:l 拓扑改变的触发条件有两个:l 当Forwarding端口转变为其他状态时l 某端口变为Forwarding状态,且交换机具备DP(交换机为非独立交换机)l 检测到拓扑变化的交换机以HelloTime为周期持续在根端口上向外发送TCN报文,到接收到TCA为止l 收到TCN后,Root Bridge 发送的BPDU报文中的TC位将被置位,维持时间为ForwardDelay+MaxAge2.5.3 时序BPDU的结构:l STP通过BPDU(Bridge Protocol Data Unit)报文来学习网络拓扑结构;l BPDU报文的目标MAC地址为:01-80-C2-00-00-00;l BPDU报文在直连的两个网桥或多个网桥内交换,不能被转发。没有运行STP协议的网桥将把BPDU报文当作普通业务报文转发;STP定时器:l Hello Timer: 根桥生成BPDU配置消息的周期,缺省时间为2秒钟l Forward Delay: 配置消息传播到全网的最大时延。缺省为15秒钟l Message Age:从根桥生成BPDU配置消息开始,到当前时间为止配置消息的存活时间l Max Message Age:BPDU配置消息存活的最大时间STP端口状态迁移:图2-8 STP端口迁移状态机STP抓包截图:图2-9 STP报文抓包2.6 RSTP消息格式2.6.1 语法图2-10 RSTP报文结构以太网报文头: l 目的mac地址 目的地址是一个固定的桥的组播地址(0x0180c)l 源MAC地址 即发送该配置消息的桥MAC地址l 长度/类型 这里表示帧长l LLC Header 固定的链路头-0xl Payload BPDU数据BPDU数据:l Protocol ID 恒为0。 l Version 恒为2。 l Type 决定该帧中所包含的两种 BPDU 格式类型(配置 BPDU 或 TCN BPDU)。 l Flags 标志活动拓朴中的变化,包含在拓朴变化通知(Topology Change Notifications)的下一部分中。l Root BID 包括有根网桥的网桥 ID。会聚后的网桥网络中,所有配置 BPDU 中的该字段都应该具有相同值(单个 VLAN)。NetXRay 可以细分为两个 BID 子字段:网桥优先级和网桥 MAC 地址。 l Root Path Cost 通向有根网桥(Root Bridge)的所有链路的积累资本。 l Sender BID 创建当前 BPDU 的网桥 BID。对于单交换机(单个 VLAN)发送的所有 BPDU 而言,该字段值都相同,而对于交换机与交换机之间发送的 BPDU 而言,该字段值不同) l Port ID 每个端口值都是唯一的。端口1/1值为08001,而端口1/2 值为08002。 l Message Age 记录 Root Bridge 生成当前 BPDU 起源信息的所消耗时间。 l Max Age 保存 BPDU 的最长时间,也反映了拓朴变化通知(Topology Change Notification)过程中的网桥表生存时间情况。 l Hello Time 指周期性配置 BPDU 间的时间。 l Forward Delay 用于在 Listening 和 Learning 状态的时间,也反映了拓朴变化通知(Topology Change Notification)过程中的时间情况。2.6.2 语义RSTP和STP的实现方式几乎相同,有个别地方做了改进,下面分别介绍RSTP的改进点RSTP的端口状态:图2-11 STP端口状态RSTP端口角色:l Root Port根端口l Designated Port指定端口l Alternate Port可选端口l Backup Port备份端口 相比STP的改进:l 如果旧的根端口已经进入阻塞状态,而且新根端口连接的对端交换机的指定端口处于Forwarding状态,在新拓扑结构中的根端口可以立刻进入转发状态。l 网络边缘的端口,即直接与终端相连,而不是和其它网桥相连的端口可以直接进入转发状态,不需要任何延时。l 增加了网桥之间的协商机制Proposal/Agreement。指定端口可以通过与相连的网桥进行一次握手,快速进入转发状态。其中Proposal报文为正常的BPDU报文,且Proposal Bit位置位。Agreement报文为Proposal报文的拷贝,且以Agreement Bit代替Proposal Bit位置位。u 协商必须在点对点链路上进行。(全双工链路)u 两种端口状态不受协商机制影响:可选端口(Alternated Port). 1、 边缘端口(Edge Port).图2-12 RSTP端口的快速切换RSTP的改进效果:l 第一种改进的效果:发现拓扑改变到恢复连通性的时间可达数毫秒,并且无需传递配置消息。l 第二种改进的效果:边缘端口的状态变化不影响网络连通性,也不会造成回路,所以进入转发状态无需延时。l 第三种改进的效果:网络连通性可以在交换两个配置消息的时间内恢复,即握手的延时;最坏的情况下,握手从网络的一边开始,扩散到网络的另一边缘的网桥,网络连通性才能恢复。比如当网络直径为7的时候,要经过6次握手。RSTP拓扑改变消息的传播:l 回顾STP的TC:u 利用TCN BPDU将拓扑变化上报到根桥u 根桥通过将FLAG中的TC比特置位(持续时间Forward Delay+Max Age),通知所有其它交换机图2-13 STP的TC传播l RSTP的TC报文:u 拓扑改变检测:只有非边缘端口转变为Forwarding状态时,产生拓扑改变u 检测到拓扑改变后的动作:在两倍Hello时间内向所有其它指定端口和根端口发送TC置位BPDU报文; 清除除接收到TC报文的端口之外的所有指定端口和根端口学习的MAC地址。u 不再使用TCN报文,报文传送更直接迅速。图2-14 RSTP的TC传播802.1W与802.1D相兼容:l RSTP的端口在三秒钟定时器后接收到STP的报文,则端口协议将切换到STP协议l 切换到STP协议的RSTP端口将丧失快速收敛特性l 出现STP与RSTP混用的情况,建议将STP设备放在网络边缘2.6.3 时序 请参考STP的时序介绍:RSTP抓包截图:图2-15 RSTP抓包截图3 网络层协议报文3.1 IP报文头图3-1 IPV4报文头格式图3-2 IPV4报文头格式RFC截图以太网报文头:l 类型:IP报文的类型为0x0800;IP报文头:l Version:4比特;表示版本;目前为4;即0100l IHL:Internet Header Length 首部长度;占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节;l 服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。l 总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。l 标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。l 标志位字段:占3比特。标志一份数据报是否要求分段。l 段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置l 生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃l 协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等l 头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)l 源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址l 可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求3.2 ARP协议报文3.2.1 语法图3-3 ARP报文格式以太网类型为0x0806代表ARP协议ARP报文格式:前四个字段用来指定后四个字段的类型和长度l 硬件地址类型:本地网络的硬件类型,例如10 Mb 的Ethernet,是以0001 为代码。l 协议类型:表示ARP 提供解析的协议类型,常为IP 协议, IP 是以0080 为代码。l 硬件地址长度:表示该类型的硬件地址長度,例如Ethernet 和 Token Ring 为06,而Frame Relay 为02。l 协议地址长度:通常表示IP 位址的长度,IPv4 为04 l OP:操作资源,具体操作如下。ARP可以用于其他类型的网络,可以解析IP地址以外的地址3.2.2 语义l ARP(AddressResolutionProtocol):地址解析用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)是属于链路层的协议。以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARPl RARP:RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份l ARP proxy:代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。l 免费ARP:免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,报文源MAC地址是本机MAC地址,报文的目的MAC地址是广播地址。设备通过对外发送免费ARP报文来实现以下功能:1、确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。2、设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项。3.2.3 时序l 每个主机上都有一个ARP高速缓存,即ARP表l ARP过程的举例: 假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2。该命令会通过ICMP协议发送ICMP数据包。l 该过程需要经过下面的步骤:1、 应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表;如果存在该IP-MAC对应关系,那么跳到步骤7;如果不存在该IP-MAC对应关系,那么接续下面的步骤;内核进行ARP广播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;当192.168.1.2主机接收到该ARP请求后,就发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去; 使用arp-a命令就可以查看本地的ARP缓存内容。 所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。ARP 表的老化机制:1、 UNIX实现中完整表项的生存时间为20分钟,不完整表项的生存时间为3分钟所谓不完整表项就是在以太网上对一个不存在的主机发出ARP请求时,在本地保留的一个只有ip地址没有MAC地址的表项。2、 Windows实现中没有被使用的ARP表项老化时间2分钟,正在使用的ARP表项老化时间10分钟。在表项正在使用时,超时值就应该启动,但是大多数的从伯克利系统演变而来的系统没有这样做它们每次都是在访问表项进重设超时值。3、 路由器ARP老化时间可以设置,时间范围一般是1-1440分钟之间,缺省为20分钟。注:没有UNIX中的完整表项和不完整表项的概念,也不存在Windows中区分ARP表项是否被上层协议所正在使用,只是固定一个老化时间,时间到了,表项就老化,正在使用的表项也一样被老化。3.3 VRRP协议报文3.3.1 语法源ip地址:物理接口的主ip地址;目的地址:224.0.0.183.4 BGP协议报文3.4.1 语法1. BGP报文头格式图3-4 BGP报文头格式BGP使用TCP端口号179;报文头参数解释:l Marker:16字节,用来检查兼容性,固定全1;l Length:无符号整形,表示整个BGP报文的长度,包括报文头,这也就是说,允许在传输层数据流定位下一个消息。最小19字节,最大4096字节。l Type:1字节无符号整形,定义了消息类型码,如下:2. Open消息格式图3-5 Open消息格式在TCP连接建立后,第一个发送的就是Open消息,如果发送的Open消息被对方接受,对方会发送一个Keepalive消息来对该Open消息进行确认。Open消息参数解释:l Version:1字节无符号整数,表示了BGP的版本号,目前是4;l My autonomous System:2字节无符号整数,表示了发送者的AS ID号;l Hold Time:2字节无符号整数,表示了发送者打算设置的Hold time值,在收到一个open消息后,BGP必须从接收到的open消息中的hold time和自己配置的hold time进行选择,选择其中较小的值为新的本地hold time。Hold time 最少是0或者大于等于3秒,它表示在收到下一个Update或Keepalive报文之前可以流逝的最大秒数。注意:有可能因为hold time时间不一致导致bgp邻居无法建立(根据设备实现)。l BGP Identifier:4字节无符号整数指示了BGP发言者的标示符。给定的BGP发言者设置BGP标示符为IP地址。在启动的时候决定BGP表示符,对每一个本地端口和每一个对端是一样的。l Optional Parameters Length(可选参数长度):1字节无符号整数指示可选参数域的字节总长度。如果这个域是0,说明没有可选参数。l Optional Parameters(可选参数):这个域包含了可选参数清单,每一个参数编码为三元组。(可选参数还可以协商双方支持的能力集)。u Parm.Type:1个字节明确指示了参数的类型;u Parm.Length:参数长度1子节包含参数值的字节长度;u Parm.Value:参数值是变长域根据参数类型有不同的解释;通常可选参数用来进行BGP的能力协商和进行验证。3. Update消息格式图3-6 Update消息格式Update消息用来在BGP邻居间传递路由信息;一个Update消息可以通告多个包含同样路径属性且来自同一邻居的路由可达信息;或者撤销多个不可达路由;UPDATE消息能够广播至少一条路由,路由可用几个路径属性描述。所有的路径属性包括在一个给定的UPDATE消息适用于在UPDATE消息的网络层可达信息域内包含的目的地。一个UPDATE消息可以仅仅撤销路由,这样就不需要包括路径属性或者网络层可达信息。相反,也可以仅仅广播可达路由,这样WITHDRAWN ROUTES不需要了。Update消息格式(不是所有的字段都会出现在每一个Update消息中):l Withdrawn Routes Length:2字节无符号整数说明了 Withdrawn Routes 域的长度; 当该长度为0时,说明没有需要撤销的路由,Update消息中也就不存在Withdrawn Routes 域;l Withdrawn Routes:可变长的该字段表示了拿些路由需要被撤销,以来标志需要撤销的网段,格式如下:u Length:掩码长度,功能等于子网掩码;当值为0时表示所有地址(这时prefix字段也是0;u Prefix:IP前缀,与掩码长度一起标识了需要撤销的网段;l Total Path Attribute Length:2字节无符号整数说明了Path Attribute字段的长度,如果长度为0,说明Path Attribute和NLRI字段为空,即没有需要发布的路由;l Path Attribute:凡是发布NLRI消息,都会带有Path Attribute字段(撤销路由不带),路径属性由组成,路径属性的消息格式如下:u Attr.flags:一个字节的Flag标识位规定了该路径属性应该具有的特性,具体如下:1、 第0比特:设置为0则是公认属性,设置为1则是可选属性;2、 第1比特:为0是可选非传递属性,设置为1是可选可传递属性;公认属性必须是可传递的;3、 第2比特:该比特规定了可选传递属性是否是完整的,不完整的属性该值设为1,完整的属性该值设为0。共有属性和可选非传递属性必须设为0;4、 第3比特:规定了后续的属性长度,即Attr.Length是一个字节(0)还是两个字节(1),例如多协议可达信息属性(Mp_Reach_NLRI)的长度字段就有2个字节。5、 第47比特:没有用,必须设置为0。u Attr.Type Code:表示了这个属性是个什么属性,具体的属性代码如上图所示。u Attr.Value:表示了这个属性的值,具体如下:1、 Origin:该公认强制属性定义了该路径消息的来源,数据字段可以有如下值:(1) Value=0 ,IGP NLRI信息来源于AS内部;(2) Value=1,EGPNLRI信息来源于EGP协议(RFC904);(3) Value=2,INCOMPLETENLRI信息通过其他方式学习到;2、 AS_Path:该公认强制属性由AS path路径段组成,每一个路径段由三元组组成:(1) Path segment type:当类型值为1时,值域中表示的是在UPDATE消息中的路由经过的AS的无序集;当类型值为2时表示在UPDATE消息中的路由经过的AS的有序集。(2) Path segment length:1字节的长度域显示了path segment value域中包含了多少个AS号,而不是多少字节;(3) Path segment value:每个AS号占用2字节,包含了多个AS号;3、 Next_HOP:该公认强制属性定义了NLRI信息中的下一跳信息,内容为单播IP地址;4、 Multi_EXIT_DISC:可选非转发属性4字节非负整数。属性值可以被BGP发言者决策过程在相邻自治系统中区分多个出口;5、 LOCAL_PREF:公认自决属性4字节非负整数。BGP发言者使用它通知别的BGP在自己的自治系统中源发言者广播路由的优先程度。6、 ATOMIC_AGGREGATE:公认自决属性长度为07、 AGGREGATOR:可选转发属性长度为6。属性包含了形成聚合路由最后的AS号码(编码为2字节),后面是形成聚合路由的BGP发言者的IP地址(编码为4字节);8、 MP_Reach_NLRI和Extended Community:多协议路径可达信息和扩展团体属性属于bgp对mpls的扩展支持,在标准bgp中不涉及。l NLRI(Network Layer Reachability Information):这个变长域包含了IP地址前缀的清单具体格式如下:u Length:掩码长度,功能等于子网掩码;当值为0时表示所有地址(这时prefix字段也是0;u Prefix:IP前缀,与掩码长度一起标识了需要发布的网段;u NLRI消息是没有长度域的,但是其长度又是变长的,可以通过如下公式来计算长度域:UPDATE消息长度-23-总的路径属性长度-不可用路由长度4. KeepAlive消息格式在BGP报文头中的类型是4,消息的内容是空。KEEPALIVE消息在对端之间交换频率要满足HOLD计时器不溢出的标准;合理的最大KEEPALIVE消息时间是HOLD计时器间隔的1/3;发送KEEPALIVE的频率不能高于1秒,应用可以调整发送KEEPALIVE消息的速率使用HOLD计时间隔的函数。如果商议哦HOLD计时间隔是0,周期性的KEKPALIVE消息必须不发送。KEEPALIVE消息只包含消息头长度是19字节。5. NOTIFICATION消息格式图3-7 NOTIFICATION消息格式NOTIFACATION消息在探测到错误情况时发送。BGP连接发送他之后要立即关闭。NOTIFICATION参数解释:l Error code:1字节的无符号整数指示了NOTIFICATION的类型。下列的错误类型编码定义:l Error subcode:一个字节的无符号整数提供了更多的信息关于报告的错误的种类。每一个错误可以由一个或者多个错误子码,如果没有特别的错误子码定义,在错误子码域填充0,具体子码含义定义如下:l Data:变长的域白用来诊断NOTIFICATION的原因。数据与的内容依赖于错误码和错误子码,注意数据与的长度可以使用公式来计算按消息长度来确定: Message Length = 21 + Data Length3.4.2 语义1. 概述两个系统通过传输协议互联。他们交换消息来打开和确认连接参数。初始的数据流是整个BGP路由表。增加的更新作为路由表改变发送。因此,BGP发言者必须保存在连接期间所有对等体的当前整个BGP路由表。KeepAlive心跳消息周期性发送来保证连接的存在。发送通知消息报错或者特别情况。如果一个连接遇到一个错误情况,要发送通知消息并且关闭连接。BGP主要的功能就是在BGP系统之间交换网络层可达信息。BGP只通告自己使用的路由给它的邻居(使用的路由表示在BGP中优选而且BGP使用它来转发数据。BGP使用TCP来做来传输协议,侦听TCP端口号179。2. 路由的发布和存储路由在一对BGP发言者之间通过UPDATE消息广播;目的地也就是在网络层可达信息(NLRI)内报告的IP地址,路径是在UPDATE消息路径属性域内报告的信息;一条Update消息可以同时通告多条具有相同路径属性的路由(NLRI中的多个前缀)。路由信息存储在路由信息库(Routing Information Bases)中,路由信息库有三个组件:Adj-RIBs-In, Loc-RIB, Adj-RIBs-Out,路由信息库的内容在下一节讲到。如果一个BGP发言者选择路由通告,他可以在通告路由到对端之前加入和修改路由的路径属性;BGP提供机制告诉对端先前的路由通告不再能使用。有三种方式供BGP发言者指示撤销某条路由的服务,具体如下:l 在UPDATE消息的WITHDRAWN ROUTES域内通告先前广播的路由目的地IP前缀,这样相应的路有被标志为不再使用;l 使用了相同网络层可达信息的替代路由被通告;l BGP发言者-发言者的连接被关闭,强制撤销这一对发言者通高的所有的路由服务;3. 路由信息库(Routing Information Bases)BGP发言者的路由信息库(RIB)包括如下三个不同部分:l Adj-RIBs-In :保存了从BGP发言者从它的邻居收到的UPDATE消息中学习到的路由信息;也就是可以被决策进程使用的路由信息。l Loc-RIB:Loc-RIB保存了BGP发言者根据本地策略在Adj-RIBs-In内选择的本地路由息;这些本地路由将被本地BGP发言者使用;而且这些路由的下一跳必须能够通过本地路由表查找的到(下一跳必须路由可达)。l Adj-RIBs-Out:保存了本地BGP发言者通告到对端的路由。Adj_RIBs_Out内部的路由消息被放在UPDATE消息内部发送到对端。总之,Adj_RIB_In包括了被对端广播到BGP发言者的路由信息;Loc_RIB包括了被本地决策过程选择的路由信息;Adj_RIBs_Out组织路由使用UPDATE消息通告到特定对端。4. 路径属性(Path Attributes)路径属性的分类:l Well-known mandatory.(公认强制)l Well-known discretionary.(公认自决)l Optional transitive.(可选转发)l Optional non-transitive.(可选非转发)路径属性分类详解BGP实现要求所有BGP应用都必须识别公认属性。公认强制属性必须携带在每一个UPDATE报文中,公认自决属性在特定的UPDATE报文中可以不被携带。当一个BGP发言者更新了一个BGP公认属性后,必须将该属性更新到发布给特性peer的UPDATE消息中。作为公认属性的补充,每条路径中可能带有可选属性。不是所有的BGP应用都需要支持所有的可选属性,如何处理不认识的可选属性是由转发比特来确定的:如果收到的UPDATE 报文的Path属性中带有了不能识别的可选转发属性,BGP进程应该接受这个属性;如果一个带有不能识别的可选传递属性的路径消息被BGP进程接收并传递到了其他bgp对等体,这时被传递的那个不能识别的可选传递属性的路径消息中,该属性的Flag字段中的部分比特(Partial bit)必须置1(也就是说,这个path消息中的可选传递属性我不认识,我一样会转发给其他bgp邻居,但是partial bit会被置1。)。被置1后的属性,当被转发到了一个能够识别它的BGP发言者时,该BGP发言者不能将其置0。不识别的可选非传递属性必须被忽略且不能传递给任何BGP对等体。新的转发可选属性可以在路由的传递过程中被添加,如果添加该属性的不是路由的始发者,属性flag标识位中的部分比特(Partial bit)被置1。新的非转发可选属性的附加取决于特定属性的特性,每一非转发可选属性的文档要包括这些法则(可以以MED属性为例子),所有可选的属性(转发和非专发的)可以被路径上的AS更新(如果合适)。发送者在发送UPDATE报文时,路径属性以升序排列,接收者在对UPDATE报文的路径属性的处理不必按序列。同样的属性不能在UPDATE消息的路径属性消息与内出现两次。路径属性的用途l ORIGIN起源属性是一个公认强制属性,该属性由BGP路由的通告者生成,且在传播的过程中不允许被更改。l AS_PATHAS_PATH是公认强制属性。该属性显示了一条路由信息已经经过了多少个自治系统。AS列表的元素可以是AS_SET或者AS_SEQUENCE。情况一,当BGP speaker通告从别的update学习到的路由:当BGP发言者通告从别的BGP发言者 UPDATE的消息学习到的路由,应该根据路由发送到的BGP发言者的位置,修改路由 AS-PATH的属性u 当给定的BGP发言者通告路由到本AS的别的BGP发言者,通告发言者应该不修改路由的AS-PATH属性u 当给定的BGP发言者通告路由到邻居AS的BGP发言者,通告发言者因该修改路由的AS-PATH属性1、 如果AS-PATH的第一个路径属性是AS-SEQUENCE类型,本地系统应该把字节的AS号码作为序列的最后一个AS号码加在后面2、 如果AS-PATH的第一个属性类型是AS-SET类型,本地系统应该添加一个新的路径段AS-SEQUENCE类型,在段的内部放AS号码情况二,当BGP speaker是路由的始发者时:u 对于向外部AS peer发布路由时,BGP路由始发者将自己的AS号加入到AS_SEQUENCE中;u 对于向内部 AS peer发布路由时,BGP路由始发者将AS_PATH属性置空,也就是AS_PATH的长度字段置0,没有内容。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!