home *** CD-ROM | disk | FTP | other *** search
/ Cisco Networkers 1998 / Cisco Networkers 1998.iso / pc / talks / nwk02 / nwk02.eml < prev    next >
Encoding:
Text File  |  1998-04-16  |  105.0 KB  |  1,638 lines

  1. <HTML>
  2. <HEAD>
  3. </HEAD>
  4. <BODY>
  5. <!--$v=0-->Hi, my name is Phil Harris.  I work for Cisco
  6. <!--$v=2885-->Systems in the Consulting Engineering Department.  Today I'll be
  7. <!--$v=5679-->discussing the features and functions and
  8. <!--$v=8199-->performance of Cisco's range of routing products.
  9. <!--$v=10901-->This is a long-standing talk at Networkers,
  10. <!--$v=13970-->and over the years has been developing to contain all the
  11. <!--$v=16993-->latest information regarding our latest routing products.
  12. <!--$v=19375-->The agenda for today will be to look at some
  13. <!--$v=22032-->perception versus reality in terms of the features
  14. <!--$v=24597-->and concepts we have to think about when looking at performance
  15. <!--$v=27986-->from an overall network perspective.  Performance is measured
  16. <!--$v=31284-->in raw figures.  However, what we'll be looking at
  17. <!--$v=33712-->is how the network itself impacts performance,
  18. <!--$v=36735-->and when we need to look at the router's performance compared to the
  19. <!--$v=39804-->overall network as a system.  We'll then look at the various layers of
  20. <!--$v=43377-->switching we can accomplish through routing 
  21. <!--$v=45804-->and what layers of performance can be affected by this.
  22. <!--$v=49102-->We'll then look at the actual architecture of the routing platforms,
  23. <!--$v=52446-->and the various switching powers within these routers
  24. <!--$v=55378-->that enable us to move packets between interfaces.
  25. <!--$v=57897-->I'll then spend some time looking at features which affect performance,
  26. <!--$v=61378-->how we can optimize our network design,
  27. <!--$v=63760-->and then spend some time looking at troubleshooting, 
  28. <!--$v=66279-->so we can find out why the networks we're using
  29. <!--$v=68661-->aren't performing as we expect them to.
  30. <!--$v=71593-->The biggest perception is that the
  31. <!--$v=73975-->bigger the router, the better, the faster, the more interfaces.
  32. <!--$v=77547-->Whereas, in fact, what we need to look at is the application of
  33. <!--$v=80433-->these routers in terms of where they're positioned in the network,
  34. <!--$v=83456-->and how they actually perform based on the media and the types of
  35. <!--$v=86846-->data and protocols we're actually transporting across them.
  36. <!--$v=89823-->Very often it's the media itself,
  37. <!--$v=92205-->the Ethernet connection or the serial wide area connection,
  38. <!--$v=95320-->that will be the biggest point of bottleneck in my network.
  39. <!--$v=98343-->Therefore, understanding where I need features and functionality, 
  40. <!--$v=101595-->as opposed to just raw bandwidth and speed,
  41. <!--$v=104206-->is often necessary.
  42. <!--$v=106634-->So let's look at what we need, which
  43. <!--$v=109519-->platforms and which features will be applied in these parts of  the network, 
  44. <!--$v=112405-->and the types of performance we can expect in these areas.
  45. <!--$v=115978-->This graph shows us
  46. <!--$v=119047-->the various media characteristics of the type of interfaces
  47. <!--$v=122070-->commonly found on routers.
  48. <!--$v=124589-->We look at Ethernet, Fast Ethernet, all the way through to
  49. <!--$v=127429-->ATM and wide area circuits.
  50. <!--$v=129902-->It's based on the minimum valid frame size 
  51. <!--$v=133338-->and the bandwidth of this media that we can determine the
  52. <!--$v=136453-->maximum number of packets per second we can expect
  53. <!--$v=138880-->to be delivered by a given media.
  54. <!--$v=141583-->The theoretical value is based on the formula,
  55. <!--$v=144331-->where if I divide the bandwidth of a media by the packet size
  56. <!--$v=147766-->I will get the theoretical performance.  
  57. <!--$v=150606-->And the less, or the smaller packets, the less efficient,
  58. <!--$v=153767-->but more packets per second.
  59. <!--$v=156240-->In the example of Ethernet,  
  60. <!--$v=158622-->it can be seen with 64-byte packets 
  61. <!--$v=161554-->I should be able to accomplish 14,880
  62. <!--$v=164302-->packets per second.
  63. <!--$v=166775-->But as can be seen on this graph, the average size of a packet
  64. <!--$v=170119-->on a network in an Ethernet example is usually between
  65. <!--$v=173142-->256 bytes and 1024 bytes,   
  66. <!--$v=176624-->giving me a range of performance anywhere between
  67. <!--$v=179418-->4.5 down to around 1200 packets
  68. <!--$v=182578-->per second.  Significantly different from the maximum
  69. <!--$v=185922-->packets per second I may be expecting to achieve
  70. <!--$v=188945-->with Ethernet.  So it's understanding not only what the
  71. <!--$v=192335-->media characteristics and limitations are,
  72. <!--$v=195129-->but the size of the packets that the applications I am using
  73. <!--$v=198106-->are likely to deliver.
  74. <!--$v=200488-->In the example we have here,
  75. <!--$v=203328-->I have an analysis of a real network.  As can be seen,
  76. <!--$v=206809-->I've looked at a network from a perspective of two campuses
  77. <!--$v=209924-->linked by an FDDI ring.  As can be seen 
  78. <!--$v=213130-->by looking at the size and the distribution of various-size packets
  79. <!--$v=216565-->from 64-byte packets, 512-byte packets, 
  80. <!--$v=220047-->and 1280-byte packets, we can see that the
  81. <!--$v=222795-->entire network will be generating on the left-hand side
  82. <!--$v=225956-->roughly 2850 packets per second.
  83. <!--$v=229482-->Now if we apply some rule of distribution of the traffic
  84. <!--$v=232780-->assuming that 80% of the traffic will
  85. <!--$v=235300-->stay local to the campus and 20% will need to traverse
  86. <!--$v=238598-->the FDDI ring, it can be seen
  87. <!--$v=241025-->that only 570 packets per second is necessary
  88. <!--$v=244598-->to accommodate all the traffic that needs to
  89. <!--$v=247163-->be forwarded across these two locations.
  90. <!--$v=249545-->This is a very simplistic example, but the idea of this is
  91. <!--$v=252568-->to show that with right net - good network design 
  92. <!--$v=255454-->and good application of routing platforms,
  93. <!--$v=258340-->we can easily meet the needs and the
  94. <!--$v=260859-->speed requirements of both the applications and the density of traffic
  95. <!--$v=264248-->in a given network.
  96. <!--$v=266814-->So now we understand the perception versus reality in terms of what
  97. <!--$v=270386-->performance means.  Let's look at where performance is
  98. <!--$v=272997-->affected and how the routers themselves provide
  99. <!--$v=275791-->their switching capabilities.
  100. <!--$v=278265-->The definition of a switch is a device
  101. <!--$v=280921-->that processes and transfers data from one
  102. <!--$v=283532-->input interface to an output interface
  103. <!--$v=286235-->based on some rules.  Maybe this is, 
  104. <!--$v=289075-->at the lowest level, the addressing
  105. <!--$v=291594-->of the end-destination network station.
  106. <!--$v=294251-->As it goes higher into the upper layers, 
  107. <!--$v=296816-->we need more processing and more ability to interrogate the
  108. <!--$v=300389-->information and therefore make our switching decision.
  109. <!--$v=302908-->Routing is an overhead -
  110. <!--$v=306343-->the concept of taking an incoming frame,  
  111. <!--$v=309641-->extracting the packet information or the Layer-3 information, 
  112. <!--$v=313031-->determining from this the destination network address,   
  113. <!--$v=316375-->then looking up some routing table or lookup table
  114. <!--$v=319673-->which has been maintained by a routing protocol, 
  115. <!--$v=322146-->deciding where the packet has to be forwarded on to,   
  116. <!--$v=325123-->making any MAC header rewrite changes
  117. <!--$v=328284-->appropriate for the forwarding of the packet,
  118. <!--$v=330757-->and then processing this out of the output interface  
  119. <!--$v=333597-->is the overhead that routing has to accomplish.
  120. <!--$v=336162-->This is significantly more than, say, a simple Layer-2
  121. <!--$v=339185-->bridge or switch has to look at, where they just need to see the
  122. <!--$v=342667-->MAC-destination address and forward the packet
  123. <!--$v=345094-->without any manipulation of fields such as the
  124. <!--$v=348163-->Time To Live or the IP Checksum field in the header.
  125. <!--$v=351553-->
  126. <!--$v=353935-->So now we understand what the overhead of routing is.
  127. <!--$v=356454-->Let's look at the various architectures and the platforms,
  128. <!--$v=359019-->and see how they accomplish this concept of switching.
  129. <!--$v=362088-->The biggest dilemma
  130. <!--$v=364745-->for most Cisco customers is the breadth of range
  131. <!--$v=367401-->of the numbers of routers in the various families of routers,
  132. <!--$v=370470-->and the various software options in terms of process switching,
  133. <!--$v=373860-->optimum switching, NetFlow switching,
  134. <!--$v=376517-->and where I should apply these and what benefits they give me,
  135. <!--$v=379219-->and also what potential performance effects they have as well.
  136. <!--$v=382471-->We'll first look at the Cisco
  137. <!--$v=385448-->low-end and mid-range architecture
  138. <!--$v=387922-->routers.  In this I'm discussing
  139. <!--$v=390716-->anything between the 2500 series and the 4700 -  
  140. <!--$v=394289-->so anywhere between the 2500s, the 3600s,
  141. <!--$v=397724-->and the 4000 series.
  142. <!--$v=400106-->Each of these class of routers have some basic
  143. <!--$v=402488-->intrinsic characteristics in terms of the things that make up
  144. <!--$v=405923-->a router.  We have a CPU, 
  145. <!--$v=408626-->which is connected to both memory, for the CPU's use, 
  146. <!--$v=411970-->and also a bus.  The bus is a -
  147. <!--$v=415176-->required to connect the various interface processes
  148. <!--$v=418657-->and shared memory which is used by both the
  149. <!--$v=422047-->interface processes and the CPU itself.
  150. <!--$v=425024-->The shared memory is divided between packet buffers
  151. <!--$v=428368-->and system buffers, and the CPU memory is divided
  152. <!--$v=431941-->between routing tables and switching caches.
  153. <!--$v=434460-->The switching caches is the area of discussion we'll have in most
  154. <!--$v=437712-->depth to understand the benefit, from a speed
  155. <!--$v=440185-->perspective, they give us.
  156. <!--$v=442567-->Looking at the processes for the 2500,
  157. <!--$v=445728-->we see we have a 20-megahertz 68040
  158. <!--$v=449117-->processor with a shared RAM up to 2 megabits -
  159. <!--$v=452553-->2 megabytes for incoming and outgoing packets,
  160. <!--$v=455118-->and up to 16 megabytes for routing tables,
  161. <!--$v=458507-->switching caches, configuration information, and so on.
  162. <!--$v=461989-->It should be noted that with only 16 megabytes of memory,
  163. <!--$v=465516-->the 2500 router is ideally placed
  164. <!--$v=468264-->where we have a smaller number of routes in my network.
  165. <!--$v=471241-->For example, connecting a 2500
  166. <!--$v=473760-->directly to the Internet may not be appropriate, 
  167. <!--$v=476509-->as the size of the routing tables on the Internet are much larger
  168. <!--$v=479898-->than can be stored in 16 megabytes of memory alone
  169. <!--$v=482784-->without the configuration information and other information that needs to be
  170. <!--$v=485990-->stored here.
  171. <!--$v=488556-->The 3600 has two flavors, the
  172. <!--$v=491395-->3620 and the 3640.
  173. <!--$v=493777-->The 3620 uses the 80-megahertz
  174. <!--$v=496342-->RISC-IDT 4600.
  175. <!--$v=499091-->The 3640 utilizes a
  176. <!--$v=501793-->133-megahertz RISC-IDT 4700.
  177. <!--$v=504862-->These are much faster processors and the
  178. <!--$v=507656-->RISC-based architecture of these processors makes
  179. <!--$v=510130-->the process of looking up information on routing tables,
  180. <!--$v=512878-->or switching caches, far more optimized and therefore faster.
  181. <!--$v=516451-->In terms of memory, we have
  182. <!--$v=518878-->up to 64 megabytes of dynamic RAM
  183. <!--$v=521581-->on the 3620, and up to 128
  184. <!--$v=524650-->megabytes of dynamic RAM in the
  185. <!--$v=527581-->3640.  This area of memory is used for both data
  186. <!--$v=530834-->and packet memory.  We have separate areas
  187. <!--$v=533628-->for configuration information up to 128
  188. <!--$v=536834-->kilobytes on the 3640.
  189. <!--$v=539262-->The 4000's
  190. <!--$v=541873-->family basically is split between the 4000
  191. <!--$v=544529-->and the 4500 and the 4700.
  192. <!--$v=547323-->The 4000 was the original platform
  193. <!--$v=549888-->based on the 40-megahertz Motorola
  194. <!--$v=552270-->68030 processor.  Again,
  195. <!--$v=554973-->this is not a RISC-based processor and is
  196. <!--$v=557446-->just the next member up from the 2500
  197. <!--$v=560561-->processor we saw earlier.  This is
  198. <!--$v=563263-->markedly different from the 4500 and the 4700, 
  199. <!--$v=566699-->which are now based on RISC processors -    
  200. <!--$v=569126-->the 4500 working at 100 megahertz  
  201. <!--$v=571829-->and the 4700 at 133 megahertz.  
  202. <!--$v=575173-->And again the maximum memory we can have
  203. <!--$v=577829-->in any of the 4000 family is 32 megabytes.
  204. <!--$v=580761-->Again, probably insufficient for directly
  205. <!--$v=583418-->connecting to a very large enterprise network or the Internet itself.
  206. <!--$v=586807-->Now we've looked
  207. <!--$v=589968-->at the physical components of the low-end and mid-range routers,
  208. <!--$v=593037-->let's see how packets and frames are processed
  209. <!--$v=596014-->by these platforms so they can make the switching decision
  210. <!--$v=598900-->and actually accomplish the task the router's been purchased for.
  211. <!--$v=602473-->We'll first look at process switching.
  212. <!--$v=605908-->Process switching is the slowest form of
  213. <!--$v=608610-->switching available on any router in terms of how it works 
  214. <!--$v=612092-->and when it should be used.  Process switching is
  215. <!--$v=615023-->not the normal default for most Layer-3 protocols, 
  216. <!--$v=617909-->such as IP and IPX, but we'll use this as an
  217. <!--$v=621482-->example to start off with, so we understand the entire process,
  218. <!--$v=624367-->so when we look at the protocols that do need to be process
  219. <!--$v=627161-->switched, we can see how this is accomplished.
  220. <!--$v=629543-->An incoming frame is delivered
  221. <!--$v=632292-->by an interface processor across the bus
  222. <!--$v=635635-->into the packet buffers in the shared memory area.
  223. <!--$v=638933-->The CPU is now interrupted
  224. <!--$v=641865-->to acknowledge the fact a packet is now
  225. <!--$v=644567-->waiting to be processed.  The router looks at the
  226. <!--$v=647865-->destination address in the header of the Layer-3
  227. <!--$v=651346-->packet information.  If it cannot find an
  228. <!--$v=654324-->entry in one of its switching caches, it now passes
  229. <!--$v=657530-->that packet processing into scheduled mode.  This means the
  230. <!--$v=661011-->router will continue doing its normal functions of
  231. <!--$v=663897-->updating routing tables and other functions,
  232. <!--$v=666325-->and when it is the turn of processing packets
  233. <!--$v=668981-->on the scheduler, we will now look at processing this packet.
  234. <!--$v=671592-->Processing the packet means looking in the routing tables
  235. <!--$v=675028-->to find an entry in the routing tables that matches
  236. <!--$v=678051-->the destination network in the
  237. <!--$v=681211-->IP header or IPX header at Layer-3 with a packet that's
  238. <!--$v=684647-->just been arrived on the interface processor.  Once I
  239. <!--$v=687716-->find this entry, I now should have the destination network
  240. <!--$v=691151-->with the outgoing interface.  I now have to
  241. <!--$v=693762-->perform some manipulation of this information to create both a new
  242. <!--$v=697243-->MAC header and also figure out where I need to pass this
  243. <!--$v=699808-->packet.
  244. <!--$v=702327-->Once I have this information, I will now initialize
  245. <!--$v=705213-->my fast cache in the low and mid-range platforms.
  246. <!--$v=708419-->This is a process of looking at the information I've derived 
  247. <!--$v=711534-->and I've now transposed onto the newly formed packet,   
  248. <!--$v=715015-->and initializing a part of memory in the CPU memory
  249. <!--$v=718359-->with this information.
  250. <!--$v=720787-->This is an example of a
  251. <!--$v=723260-->fast switching cache.  This is an AppleTalk example.  
  252. <!--$v=725642-->And we can see that we have the destination network number,
  253. <!--$v=728528-->the outgoing interface for that network,
  254. <!--$v=731001-->and the new MAC header which will be prepended
  255. <!--$v=734162-->to the frame as it leaves the interface on the way out
  256. <!--$v=737322-->of the router.  An important point to notice
  257. <!--$v=740666-->here is the cache version number, in this case,
  258. <!--$v=743918-->195.  The switch - the cache version number tells me
  259. <!--$v=747308-->the last time this cache was updated
  260. <!--$v=749690-->or the values were changed.  Now with
  261. <!--$v=752667-->IOS version 10.3 - or sorry - earlier than 10.3,
  262. <!--$v=755873-->any single entry change in the cache
  263. <!--$v=759309-->caused the entire cache to be invalidated.
  264. <!--$v=761691-->And the entire cache now needs to be built up again
  265. <!--$v=764302-->through process switching.  Process switching as we're
  266. <!--$v=767141-->discussing is a fairly slow process, and also takes up much
  267. <!--$v=770302-->CPU time.  Therefore, after
  268. <!--$v=772821-->10.3 and later, only partial-cache
  269. <!--$v=775341-->invalidation happens.  This means if a given
  270. <!--$v=778593-->interface goes down, or a network-topology change occurs,
  271. <!--$v=781936-->only those changes will be deleted or invalidated
  272. <!--$v=785189-->from the cache.  Now if there are major numbers
  273. <!--$v=788761-->of changes, again, the entire cache will be invalidated.
  274. <!--$v=791647-->The way that the cache itself is
  275. <!--$v=794441-->aged out is that every minute an aging process
  276. <!--$v=797510-->looks at 20%, or one-twentieth rather, 
  277. <!--$v=800991-->of the number of entries in the cache and deletes the oldest
  278. <!--$v=804335-->one-twentieth number of entries in the cache.
  279. <!--$v=807129-->If for some reason the cache becomes very large,
  280. <!--$v=809878-->this will be more aggressive, and up to
  281. <!--$v=812443-->25% of the entries will be deleted every minute.
  282. <!--$v=815191-->This means that more and more process switching will be accomplished.
  283. <!--$v=818122-->This means that there could be a performance impact if I have
  284. <!--$v=821146-->a lot of entries in my cache,
  285. <!--$v=823711-->or my memory is limited, or if there's lots of invalidation
  286. <!--$v=826917-->of entries.  So the two things to look for is this
  287. <!--$v=830123-->version number to tell me, "Are there lots of changes happening
  288. <!--$v=832780-->in my cache?" - and then to decide
  289. <!--$v=835208-->are they through a routing table change,
  290. <!--$v=837590-->an interface flap, or just because of the size of entries
  291. <!--$v=840521-->in my route cache - or my fast cache rather.
  292. <!--$v=844048-->Now I've initialized the
  293. <!--$v=847254-->fast cache with the information.  If we go back to the example before,
  294. <!--$v=850369-->I can now pass that information, as I said, onto the newly formed packet.
  295. <!--$v=853896-->The frame then leaves the outbound interface processor
  296. <!--$v=857377-->where the source of the MAC address
  297. <!--$v=860721-->now coming from the interface is now added to the packet
  298. <!--$v=863744-->and I finally do the CRC check or
  299. <!--$v=866172-->the sidekick redundancy check.  So those things are done on the
  300. <!--$v=869653-->interface processor because they don't need to be bothered with the CPU.
  301. <!--$v=872539-->The CPU is required to look at the
  302. <!--$v=875379-->routing tables and the caches, not just the prepend information, 
  303. <!--$v=878035-->as the outbound interface can do this for us.
  304. <!--$v=881425-->
  305. <!--$v=883853-->If we look at fast switching now, after process
  306. <!--$v=886921-->switching, let's assume this packet has come in.  And now there is
  307. <!--$v=889578-->an entry in the fast cache.  Well again, when the packet
  308. <!--$v=893014-->reaches the packet buffers we'll interrupt the CPU.  
  309. <!--$v=895441-->But because the CPU can find an entry in the fast cache,
  310. <!--$v=898648-->this packet will be dealt with immediately.
  311. <!--$v=901442-->So we don't need to go into the scheduling mode we saw before in process
  312. <!--$v=904831-->switching and wait for the CPU to be available to do switching.
  313. <!--$v=908038-->This time we immediately will deal with looking in the fast cache,
  314. <!--$v=911152-->deriving the new MAC header information,
  315. <!--$v=913580-->prepending this to the packet in the system - in the packet buffers,
  316. <!--$v=917153-->and we can then pass the newly
  317. <!--$v=919809-->formed frame and packet out of the outbound
  318. <!--$v=922191-->interface, again doing the same changes on the way out.
  319. <!--$v=924985-->And this process has happened much quicker with less CPU
  320. <!--$v=928421-->steps, and therefore is a much more optimized fashion of switching that we can use.
  321. <!--$v=931994-->Fast switching is the default for both
  322. <!--$v=934696-->IP and IPX, and other protocols as well,
  323. <!--$v=937215-->and therefore is the usual form of operation,
  324. <!--$v=939826-->unless for some reason we have turned fast switching off.
  325. <!--$v=943078-->Some of the reasons we may not decide to use fast switching
  326. <!--$v=946468-->are things like turning DEBUG on.  The DEBUG function
  327. <!--$v=949949-->requires a CPU to look at each packet in turn.
  328. <!--$v=953293-->This means if I turn DEBUG on, I need to turn
  329. <!--$v=955904-->process switching on effectively.  This is done automatically by the router,
  330. <!--$v=959156-->but it does mean that if I leave DEBUG turned on,
  331. <!--$v=961950-->all those packets that are being interrogated by the router
  332. <!--$v=964561-->will be process switched, giving us a very big performance 
  333. <!--$v=967996-->impact.  If we look at the
  334. <!--$v=970424-->process and fast switching performance figures,
  335. <!--$v=973722-->we can see the great range in difference of performance.
  336. <!--$v=976653-->If we look at the 2500 series,
  337. <!--$v=979035-->process switching is down to about 1800
  338. <!--$v=981967-->packets per second.  Even this is a fairly optimistic number.
  339. <!--$v=984853-->Whereas fast switching is anything up to about 6000
  340. <!--$v=987830-->packets per second.  Again, looking at the 4700,
  341. <!--$v=990670-->we have 11,000 packets per second for process switching,
  342. <!--$v=994197-->50,000 packets per second for fast switching.
  343. <!--$v=997586-->Now this is another good opportunity to look at where we would use process switching.
  344. <!--$v=1001113-->Some protocols simply cannot be fast switched
  345. <!--$v=1003633-->because the information in the header is not constant as it is with maybe
  346. <!--$v=1007205-->IP or IPX.  An example of this would be
  347. <!--$v=1009862-->X.25 packets.  X.25 packets are
  348. <!--$v=1013114-->always process switched.  Therefore, if we
  349. <!--$v=1016321-->have X.25 requirements in my network, I need to pick a router,
  350. <!--$v=1019893-->or choose a router, that can meet the performance requirements
  351. <!--$v=1023054-->of my X.25 network.  Therefore, a device that has a
  352. <!--$v=1026581-->higher processing switching capability would be required, 
  353. <!--$v=1029467-->such as the 4500 or 4700 routers.
  354. <!--$v=1032536-->Now we've looked at the low to mid-range,
  355. <!--$v=1036017-->let's look at the Cisco 7000 router family.
  356. <!--$v=1038628-->This is a different architecture and has a host of different switching
  357. <!--$v=1041788-->mechanisms available.
  358. <!--$v=1044307-->First  we will look at the 7000 architecture itself.
  359. <!--$v=1047560-->The 7000 architecture
  360. <!--$v=1049987-->is based on a bus called the CX bus.
  361. <!--$v=1053102-->The CX bus works at 533 megabits
  362. <!--$v=1056171-->per second.  And to this I connect interface processors.
  363. <!--$v=1059560-->I have my Ethernet interface processors,
  364. <!--$v=1062171-->ATM interface processors, and so on.
  365. <!--$v=1064920-->The 7000 router can accommodate up to four
  366. <!--$v=1068492-->interface processors, and has a
  367. <!--$v=1071149-->switch processing module and a route processing module.
  368. <!--$v=1073806-->We'll see how these two processing modules operate in a few
  369. <!--$v=1077287-->moments.
  370. <!--$v=1079760-->If we look at the physical characteristics of the routers,
  371. <!--$v=1082600-->the 7000 is based around the 25-megahertz,
  372. <!--$v=1085578-->68040 processor.
  373. <!--$v=1088189-->It should be obvious by now that the speed of the processor
  374. <!--$v=1091349-->and the type of the processor affects how fast
  375. <!--$v=1094052-->the router can do process switching.  Already it should be evident
  376. <!--$v=1097579-->that the 7000 does not have a process switching-oriented  
  377. <!--$v=1101014-->processor, and we will see why that is in a few moments.
  378. <!--$v=1103762-->As I said, 533 megabytes
  379. <!--$v=1106373-->per second is the speed of the bus, and I can have up to five
  380. <!--$v=1109900-->interface processors on the 7000
  381. <!--$v=1113061-->and three on the 7010 version of the
  382. <!--$v=1116221-->7000 router.  As far as memory's
  383. <!--$v=1119794-->concerned, I can have up to 64 megabytes of dynamic RAM
  384. <!--$v=1123321-->for holding routing tables and caching
  385. <!--$v=1126482-->tables, and up to 512
  386. <!--$v=1129505-->kilobytes of memory for my packet buffers.
  387. <!--$v=1132390-->If I choose to insert the silicon switch engine,
  388. <!--$v=1135872-->the other variety of the switch processor, I can have
  389. <!--$v=1138757-->up to 2 megabytes of packet
  390. <!--$v=1141185-->buffers in the silicon switch engine.
  391. <!--$v=1144712-->These are the physical characteristics.  Now look at how - let's look - now look at
  392. <!--$v=1147873-->how packets and frames are processed by the 7000.
  393. <!--$v=1150804-->First, let's look at the switching
  394. <!--$v=1153598-->paths available.  We have a number of switching paths available.
  395. <!--$v=1156896-->Process switching as we saw before, fast switching which
  396. <!--$v=1160377-->is the default for all protocols,  autonomous switching
  397. <!--$v=1163813-->which is available on the switch processor card,
  398. <!--$v=1166882-->silicon switch processing, which is available if I have
  399. <!--$v=1169859-->the silicon switch processing card option inserted in the router,
  400. <!--$v=1173432-->RSP-based optimum switching
  401. <!--$v=1176592-->if I've inserted the RSP 7000
  402. <!--$v=1179524-->processing card, and RSP 7000
  403. <!--$v=1182776-->NetFlow, again if I've inserted the RSP
  404. <!--$v=1185158-->7000 route processing card.
  405. <!--$v=1187998-->Let's look at process switching.
  406. <!--$v=1190380-->First we will look at how memory is carved up on these routing
  407. <!--$v=1193678-->platforms.  On the switch processor,
  408. <!--$v=1196059-->my packet memory is divided between my silicon
  409. <!--$v=1198670-->cache, my autonomous cache, and my packet buffers.
  410. <!--$v=1201877-->The route processor has the dynamic
  411. <!--$v=1204946-->RAM located, which is divided between my
  412. <!--$v=1208381-->routing tables, my system buffers, and my fast cache.
  413. <!--$v=1211083-->We'll now look at how a packet coming in or frame coming in from the 
  414. <!--$v=1214473-->interface processor is dealt with in process switching mode.
  415. <!--$v=1218046-->The incoming packet is placed in the packet
  416. <!--$v=1221527-->buffers, and again we interrogate the destination network.
  417. <!--$v=1224779-->This again is done as an interrupted mode on
  418. <!--$v=1227756-->the CPU.  Initially the autonomous -
  419. <!--$v=1230780-->sorry - the switch processor, or the silicon switch processor, will do
  420. <!--$v=1234169-->this function,  and will first check the silicon switch cache
  421. <!--$v=1237421-->and the autonomous cache on the switch processor for an entry.
  422. <!--$v=1240994-->If there is no entry this means this packet has
  423. <!--$v=1243788-->not been seen before, or this packet cannot be
  424. <!--$v=1246399-->autonomously switched, or silicon switched.
  425. <!--$v=1248964-->In this case, the header of the
  426. <!--$v=1252079-->packet will be passed across the system bus into the system
  427. <!--$v=1255606-->buffers.  Now again, the CPU on the
  428. <!--$v=1258171-->route processor will be interrupted from whatever function it's
  429. <!--$v=1260553-->processing at the time, and will interrogate
  430. <!--$v=1263301-->the information in the destination field,
  431. <!--$v=1266049-->first looking at the fast cache.
  432. <!--$v=1268431-->If the entry for this destination
  433. <!--$v=1271225-->network does not exist in the fast cache, the process will now go into
  434. <!--$v=1274798-->scheduled mode as before.  What will now happen is
  435. <!--$v=1278325-->we will go to process switching.
  436. <!--$v=1280707-->The entire contents of the packet now have to be copied
  437. <!--$v=1283776-->into the system buffers.  We will now look at the
  438. <!--$v=1287074-->routing tables for a corresponding entry for
  439. <!--$v=1289639-->this destination network, and go through the same process
  440. <!--$v=1292937-->of initializing the fast cache.
  441. <!--$v=1295456-->The fast cache now has the information
  442. <!--$v=1298067-->that can be used to do switching of this packet
  443. <!--$v=1300861-->in fast switching mode.  Once we have this
  444. <!--$v=1304068-->information, we will also now copy this information to your autonomous cache
  445. <!--$v=1307320-->and the silicon switch cache, 
  446. <!--$v=1310847-->if these processes have been enabled
  447. <!--$v=1313412-->for autonomous switching, or silicon switching, because I have a silicon
  448. <!--$v=1316664-->switch processor.  The packet is now
  449. <!--$v=1320237-->passed back into the packet buffers with the new MAC header information
  450. <!--$v=1323718-->and passed out of the outbound interface, again
  451. <!--$v=1326329-->right through the CRC check on the way out.  As can be seen,
  452. <!--$v=1329856-->process switching on the 7000 series is a very
  453. <!--$v=1333429-->laborious process, takes many, many steps, 
  454. <!--$v=1335810-->and therefore is very slow and cumbersome.
  455. <!--$v=1338284-->And as the 7000 processor based on the
  456. <!--$v=1340895-->Motorola chips set at 25 megahertz
  457. <!--$v=1343322-->using the 68040 processor, we can see will
  458. <!--$v=1346804-->suffer in process switching-type environments.  The
  459. <!--$v=1349414-->7000 was never designed to accommodate highly
  460. <!--$v=1352575-->intensive process switching environments such as X.25
  461. <!--$v=1355232-->or IBM tunnel-entry or exit points.
  462. <!--$v=1358759-->
  463. <!--$v=1361186-->If we look at fast switching now, the packet again
  464. <!--$v=1364668-->is placed in the packet buffers as it comes into the
  465. <!--$v=1367233-->switch processor, or silicon switch processor card.  
  466. <!--$v=1369981-->Assuming no entry exists in either of these
  467. <!--$v=1373096-->caches because maybe we have turned off autonomous switching,
  468. <!--$v=1376348-->or silicon switching, or in a more likely example,
  469. <!--$v=1379554-->I haven't turned these on.  In general, in
  470. <!--$v=1382440-->the 7000 series, fast switching is the default switching
  471. <!--$v=1386013-->path.  So if I do not enable autonomous
  472. <!--$v=1388807-->switching, although I normally can, or silicon switching, when I've bought
  473. <!--$v=1392105-->the silicon switch option, I won't actually get benefit from this
  474. <!--$v=1395357-->card.  So fast switching, again - 
  475. <!--$v=1397785-->The header information is copied across the system bus
  476. <!--$v=1400853-->into the system buffers, I find the
  477. <!--$v=1403556-->corresponding entry in the fast cache
  478. <!--$v=1406258-->in interrupt mode now, so that the CPU on the
  479. <!--$v=1409602-->route processor stops what it's doing, and then copy the packet header
  480. <!--$v=1413175-->across the system buff - bus, back into
  481. <!--$v=1416198-->the packet buffers.  And now the packet is now
  482. <!--$v=1419084-->forwarded out of the outbound interface.
  483. <!--$v=1421741-->This is a much faster process than
  484. <!--$v=1424580-->process switching, but as you can see, we've still had to copy the packet
  485. <!--$v=1427833-->header across the system bus into the route
  486. <!--$v=1431268-->processor, and then interrupt the route processor to find the entry in the
  487. <!--$v=1434749-->fast cache.  The 7000 was really designed
  488. <!--$v=1438230-->to take advantage of the switch processor card and the silicon
  489. <!--$v=1441620-->switch processor card.  If we look at the autonomous
  490. <!--$v=1444735-->switch example now, an incoming packet
  491. <!--$v=1447208-->is placed in system - in the packet buffers on the switch processor
  492. <!--$v=1450598-->card.  The autonomous
  493. <!--$v=1452980-->switching process now will look at the destination network
  494. <!--$v=1456094-->and interrogate the autonomous switching cache.
  495. <!--$v=1459072-->As we saw in the previous example, 
  496. <!--$v=1461637-->process switching will initialize the autonomous
  497. <!--$v=1465164-->cache once it's processed its own information.
  498. <!--$v=1467591-->So now I should be able to glean this information from the autonomous
  499. <!--$v=1471164-->cache, make my switching decision, create my new
  500. <!--$v=1474004-->MAC header rewrite information, and process the packet
  501. <!--$v=1477348-->locally on the switch processor card without interrupting
  502. <!--$v=1480463-->the route processor.  This also
  503. <!--$v=1482844-->means the packet never leaves the packet buffers on the
  504. <!--$v=1485684-->switch processor card.
  505. <!--$v=1488753-->The packet information is now created and the outbound packet interface
  506. <!--$v=1492234-->is chosen, and we do the CRC check as the frame
  507. <!--$v=1495395-->leaves the outbound interface.
  508. <!--$v=1497868-->Silicon switch processing is exactly the same
  509. <!--$v=1500708-->process.  But with the hardware assist of the silicon switch
  510. <!--$v=1503502-->engine, we can derive much faster performance figures
  511. <!--$v=1505930-->than we can with simply autonomous switching.  
  512. <!--$v=1508358-->But in general the process is exactly the same.  A
  513. <!--$v=1511152-->packet is passed into packet buffers.  The switch processor
  514. <!--$v=1514725-->card, in this case a silicon switch processor card, interrogates
  515. <!--$v=1517839-->the packet information, finds the entry in its own
  516. <!--$v=1521229-->cache, makes the rewrite information available, and processes
  517. <!--$v=1524252-->the packet out of the outbound interface.
  518. <!--$v=1527046-->If we look at the performance differences
  519. <!--$v=1529565-->between process switching and silicon
  520. <!--$v=1532085-->switching we can see why the 7000 was really
  521. <!--$v=1534696-->designed for both autonomous and silicon switching modes of operation.
  522. <!--$v=1537994-->Process switching of 2500
  523. <!--$v=1541063-->packets per second, again, is fairly optimistic.
  524. <!--$v=1543811-->In general it would be normal to
  525. <!--$v=1546239-->see figures of 1000 packets per second or
  526. <!--$v=1548758-->less in process switching mode.  Compared
  527. <!--$v=1551277-->to 271,000 packets per second
  528. <!--$v=1554025-->for silicon switch processing, we can see
  529. <!--$v=1556407-->that the 7000 has really been designed for this type of
  530. <!--$v=1559201-->protocol application.  So if the protocols - that - cannot
  531. <!--$v=1562591-->be fast switched, we certainly cannot autonomous or silicon-switch
  532. <!--$v=1566118-->these packets.  So for X.25
  533. <!--$v=1569141-->packets, again as the example, the 7000 would not be a good platform
  534. <!--$v=1572576-->to end or terminate my X.25
  535. <!--$v=1576103-->packets or switch my X.25 packets, 
  536. <!--$v=1578668-->unless maybe they were being carried by some other protocol
  537. <!--$v=1581096-->such as X.25 over TCP/IP,
  538. <!--$v=1584211-->in which case the IP would be fast switched, or autonomously
  539. <!--$v=1587646-->switched, or silicon switched, and then I could derive the performance I require.
  540. <!--$v=1591173-->Okay, we've looked at the 7000 series,
  541. <!--$v=1594288-->now let's look at the 7200 and 7500 series.
  542. <!--$v=1597494-->First we're looking at the architecture of these routers.
  543. <!--$v=1600838-->The 7206 is based on a
  544. <!--$v=1604411-->network processing engine, and we'll look at the various varieties
  545. <!--$v=1607480-->available on this.  We then have three PCI interfaces,
  546. <!--$v=1611007-->each working at 200 megabits per second.
  547. <!--$v=1613709-->The two main PCI
  548. <!--$v=1616458-->buses can accommodate three interface processors each.
  549. <!--$v=1619068-->The third PCI bus is reserved
  550. <!--$v=1622321-->for a 100-megabits-per-second Fast Ethernet
  551. <!--$v=1625573-->interface on an I/O controller card.
  552. <!--$v=1628046-->This allows me to have an uplink to a
  553. <!--$v=1631436-->LAN switch, or some other Fast Ethernet infrastructure,
  554. <!--$v=1634642-->and have my other port adapters available
  555. <!--$v=1637207-->for serial lines and other type of port
  556. <!--$v=1639589-->adapters.  The 7200 uses exactly
  557. <!--$v=1642337-->the same port adapters as the 7500
  558. <!--$v=1645131-->family we will see in a few moments.
  559. <!--$v=1648109-->If we look at the processing
  560. <!--$v=1650491-->engines in the 7200s, we have the
  561. <!--$v=1653605-->NPE 100, 150, and 200.
  562. <!--$v=1656491-->The difference between these processors are
  563. <!--$v=1659239-->the speed and type of the processor.  The NPE 100
  564. <!--$v=1662766-->and 150 is based on the 150-megahertz
  565. <!--$v=1666019-->Orion R4700 chip set,
  566. <!--$v=1668904-->whereas the NPE 200 is a 200-megahertz
  567. <!--$v=1672385-->R5000 RISC-based processor.
  568. <!--$v=1675225-->In terms of dynamic RAM, I have
  569. <!--$v=1678019-->up to 128 megabytes of memory, 
  570. <!--$v=1680493-->giving me plenty of memory available for things like large
  571. <!--$v=1683562-->routing tables and large switching caches.
  572. <!--$v=1685990-->On the NPE 150 and 200,
  573. <!--$v=1689058-->I have an added one megabytes of
  574. <!--$v=1692219-->SRAM or Static RAM.  Static RAM is much faster
  575. <!--$v=1695517-->in terms of accessing the memory and therefore can deliver much
  576. <!--$v=1698815-->faster interprocessor switching capabilities
  577. <!--$v=1701472-->if I need these.  So if I'm using very fast
  578. <!--$v=1704861-->interfaces such as Fast Ethernet, or
  579. <!--$v=1707701-->ATM, or maybe HSSI, I would use the
  580. <!--$v=1711136-->NPE 150 or 200 so I can make
  581. <!--$v=1713885-->use of the Static RAM capabilities for fast packet transfer.
  582. <!--$v=1717091-->The 7500
  583. <!--$v=1720526-->starts with the 7505 router.
  584. <!--$v=1723229-->The architecture in this respect is somewhat similar
  585. <!--$v=1726160-->to the 7000.  We have a central
  586. <!--$v=1728680-->bus, now termed the CY bus.  The
  587. <!--$v=1731978-->CY bus differs from the CX bus in the 7000
  588. <!--$v=1734680-->inasmuch as it works at twice the speed.
  589. <!--$v=1737154-->It works at one gigabit per second.  The way this is
  590. <!--$v=1740635-->accomplished is to use the same clocking bus as the
  591. <!--$v=1744116-->7000, but to transfer twice as many words of data,
  592. <!--$v=1746864-->two instead of one per CPU cycle,
  593. <!--$v=1749658-->therefore doubling the amounts of throughput I can achieve
  594. <!--$v=1753048-->on this bus.  I have a route
  595. <!--$v=1756117-->switch processor as my combined route processor
  596. <!--$v=1758911-->and switch processor, and up to four
  597. <!--$v=1762163-->interface processors which can be a traditional 7000
  598. <!--$v=1765644-->interface processors, or the new generation
  599. <!--$v=1768209-->of Versatile Interface Processors we will speak about later.
  600. <!--$v=1771599-->The 7507
  601. <!--$v=1774393-->is based on two CY buses
  602. <!--$v=1776775-->and now two route switch processors.
  603. <!--$v=1779661-->In the 7507, either the RSP2s 
  604. <!--$v=1782684-->or RSP4s can be used.  It should be noted that although
  605. <!--$v=1786165-->there are two RSP cards in the 7507,
  606. <!--$v=1789555-->only one is ever used at a time,
  607. <!--$v=1791982-->and the other one is used as a backup in case of failure
  608. <!--$v=1794868-->on the primary or master RSP.
  609. <!--$v=1797296-->As can be seen, I have up to five interface
  610. <!--$v=1800777-->processors that are divided across the two buses.
  611. <!--$v=1803571-->It should be noted the RSP
  612. <!--$v=1805999-->touches both buses and therefore is responsible for arbitrating
  613. <!--$v=1809342-->packets across both buses simultaneously.
  614. <!--$v=1811953-->Again I can use both the traditional interface processors
  615. <!--$v=1815251-->and the versatile interface processes.
  616. <!--$v=1818687-->The 7513 architecture is exactly the same
  617. <!--$v=1821435-->as the 7507, except I have many more interfaces now.
  618. <!--$v=1824412-->Up to 11 interface processor cards can be
  619. <!--$v=1827664-->inserted into the 7513 chassis,
  620. <!--$v=1830092-->again using either the RSP2 or the
  621. <!--$v=1832932-->RSP4 route switch processors in master and slave mode.
  622. <!--$v=1836230-->An additional member
  623. <!--$v=1839024-->of this family, which I've included in this presentation, is the route switch
  624. <!--$v=1842597-->module which is incorporated in the Catalyst
  625. <!--$v=1845116-->5000 and 5500 family of workgroup
  626. <!--$v=1847864-->switches or multi-layer switches.  The RSN
  627. <!--$v=1851025-->module is an RSP2 class router
  628. <!--$v=1853865-->blade which can be inserted into the 5000 or 5500,
  629. <!--$v=1857163-->and give direct routing capabilities
  630. <!--$v=1859865-->on a per-VLAN basis without the
  631. <!--$v=1862659-->requirement for external interface processors connecting to a work
  632. <!--$v=1866232-->group or campus switch.  This is a very
  633. <!--$v=1869072-->optimized solution when I wish to terminate and route between VLANs
  634. <!--$v=1872370-->in a switched environment.
  635. <!--$v=1874752-->If we look at the -
  636. <!--$v=1877271-->how the path of the packets in the route switch module work,
  637. <!--$v=1880478-->initially packets will come from the standard switch
  638. <!--$v=1883226-->interface processor cards like the Fast
  639. <!--$v=1885974-->Ethernet or the 10-megabits-per-second switch interface processors.
  640. <!--$v=1889547-->It will be flooded across the Catalyst 5000
  641. <!--$v=1893120-->bus until the supervisor
  642. <!--$v=1896143-->engine on the Catalyst 5000 or 5500 
  643. <!--$v=1898708-->dictates that the packets should be forwarded only to the RSM.
  644. <!--$v=1902097-->When the RSM receives these packets, it deals with them
  645. <!--$v=1905121-->exactly as it would from an outbound
  646. <!--$v=1907594-->interface, or external interface, in terms of routing these
  647. <!--$v=1910663-->exactly the same way as a standard router would do.
  648. <!--$v=1913136-->So an RSM has all these same process switching modes,
  649. <!--$v=1916389-->fast switching modes as we'll see on the RSP
  650. <!--$v=1919458-->processors in a few moments.
  651. <!--$v=1922297-->If we look at the various hardware
  652. <!--$v=1925046-->components of the 7500 family,
  653. <!--$v=1927428-->we see that the RSP2
  654. <!--$v=1929809-->is based on a 100-megahertz R4600 processor.
  655. <!--$v=1933153-->The RSP4
  656. <!--$v=1935673-->is based on a 200-megahertz R5000-chip
  657. <!--$v=1938512-->set, as we saw before with the 7200.
  658. <!--$v=1941810-->I have up to 11 processors available, sorry,
  659. <!--$v=1944559-->interface processor cards available on the 7513,
  660. <!--$v=1947536-->five on the 7507, and four on the
  661. <!--$v=1950697-->7505.  If we look at the
  662. <!--$v=1954178-->memory architecture, I can have up to 128 megabytes
  663. <!--$v=1957521-->of DRAM on the RSP1 and 2,
  664. <!--$v=1960041-->and up to 256 megabytes of DRAM
  665. <!--$v=1962835-->on my RSP4.  This means extremely large
  666. <!--$v=1966316-->routing tables and caches can be accommodated, 
  667. <!--$v=1968835-->and multiple caches can be accommodated
  668. <!--$v=1971492-->on the RSP4.  It should be noted at this
  669. <!--$v=1974653-->point that when I talk about the memory use of - for caches,
  670. <!--$v=1977767-->I have a separate autonomous, sorry, fast cache for IPX,
  671. <!--$v=1981248-->AppleTalk, IP.  And each of these data
  672. <!--$v=1984409-->structures needs to be stored in dynamic RAM.
  673. <!--$v=1986791-->So obviously the larger the amount of dynamic RAM available,
  674. <!--$v=1989768-->the more routing caches, and the larger routing
  675. <!--$v=1992517-->caches I can store in these memory structures.
  676. <!--$v=1995585-->I mentioned before the Versatile
  677. <!--$v=1999158-->Interface Processor card.  This is a new generation of
  678. <!--$v=2002273-->interface processor card that allows me to put
  679. <!--$v=2004655-->a variable number - type of interface
  680. <!--$v=2007174-->processor into the same slot on a router.
  681. <!--$v=2009648-->Traditionally, a router would have an
  682. <!--$v=2012533-->Ethernet or Token Ring interface on a given slot.
  683. <!--$v=2015236-->Now I can mix and match the various types of interfaces
  684. <!--$v=2018763-->on a per-slot basis with up to two port adapters
  685. <!--$v=2022198-->being accommodated by a single versatile
  686. <!--$v=2025221-->interface processor.  The versatile interface
  687. <!--$v=2028244-->processor also has a switch processor on
  688. <!--$v=2031176-->the VIP itself.  And we have packet memory here as well.
  689. <!--$v=2034749-->And the idea here as we'll see in a few
  690. <!--$v=2037222-->moments is that local switching decisions can be made on the VIP
  691. <!--$v=2040429-->card without having to cross the bus into the
  692. <!--$v=2043406-->RSP if this is available to us.
  693. <!--$v=2046063-->We have a variety of types of VIPs available.
  694. <!--$v=2049452-->The two VIPs that are most commonly utilized
  695. <!--$v=2052521-->are the VIP2-40 and the VIP2-50.
  696. <!--$v=2056094-->The VIP2-40 has up to two megabytes
  697. <!--$v=2059621-->of SRAM and 32
  698. <!--$v=2062369-->megabytes of dynamic RAM for packet buffers and also for cache entries,
  699. <!--$v=2065759-->and the VIP-250 has
  700. <!--$v=2068324-->a much faster processor and up to 8 megabytes of SRAM.
  701. <!--$v=2071668-->Other service
  702. <!--$v=2074049-->adapters can also be inserted into the VIP card such as a compression
  703. <!--$v=2077393-->agent which allows me to compress my data in hardware
  704. <!--$v=2080004-->without the route switch processor having to be utilized
  705. <!--$v=2083302-->to do this very CPU-intensive function.
  706. <!--$v=2086600-->Let's now look at the RSP-based router switching paths.
  707. <!--$v=2090173-->We
  708. <!--$v=2092738-->have on the RSP-based devices - so the 7500s, 
  709. <!--$v=2096082-->the 7200s, and also the route switch module,
  710. <!--$v=2098509-->process switching, file switching,
  711. <!--$v=2100937-->optimum switching, NetFlow switching,
  712. <!--$v=2103777-->distributed switching, and finally Cisco Express Forwarding.
  713. <!--$v=2106983-->The way the
  714. <!--$v=2110144-->memory is divided on the RSP is between dynamic
  715. <!--$v=2112755-->RAM being used for system buffers, my routing tables and my
  716. <!--$v=2116190-->various caches and forwarding-information tables,
  717. <!--$v=2118801-->and my packet memory in SRAM being
  718. <!--$v=2121870-->used for packet buffers.
  719. <!--$v=2124297-->Let's look at process switching on the 7500 series, first of all.
  720. <!--$v=2127595-->When the packet comes in from the interface processor, we store
  721. <!--$v=2131168-->this in the packet memory in the SRAM.
  722. <!--$v=2133550-->The CPU is interrupted and we look
  723. <!--$v=2135932-->in the fast cache initially to see if an entry exists
  724. <!--$v=2138772-->for this destination network.  In this case it does not,
  725. <!--$v=2142253-->so we pass the packet into the DRAM system
  726. <!--$v=2145734-->buffers on the RSP.  The CPU now goes
  727. <!--$v=2149032-->into scheduled mode and now after completing
  728. <!--$v=2152376-->all other tasks it was scheduled to perform, we'll look in the routing
  729. <!--$v=2155811-->table to find the corresponding entry as we saw before on the other platforms.
  730. <!--$v=2159155-->We will now initialize the fast
  731. <!--$v=2162407-->cache, or whichever cache is the default for this type of protocol, 
  732. <!--$v=2165888-->make the new right MAC header rewrite information available, 
  733. <!--$v=2169278-->pass this packet into the packet buffers, 
  734. <!--$v=2171889-->and pass it out of the outbound interface.
  735. <!--$v=2174271-->Now this took less steps than process switching in the
  736. <!--$v=2177706-->75, 70 - sorry - 7000 series, but as you can
  737. <!--$v=2180271-->still see, we need to move packet information
  738. <!--$v=2183157-->from one type of memory to another.
  739. <!--$v=2185768-->For fast
  740. <!--$v=2188653-->switching, when the packet comes into the packet buffers, we
  741. <!--$v=2191493-->will now find an entry in the fast cache
  742. <!--$v=2193875-->as the previous process-switching example has now initialized
  743. <!--$v=2196761-->the fast cache.  The packet stays in the
  744. <!--$v=2199509-->packet buffers in SRAM.  We find the entry
  745. <!--$v=2202441-->in the fast cache, make the MAC header rewrite information
  746. <!--$v=2205785-->available to the packet in packet buffers, and pass the packet
  747. <!--$v=2209357-->out of the corresponding outbound interface - a much
  748. <!--$v=2212472-->faster process, and no moving packets from one part of
  749. <!--$v=2215999-->memory to another part of memory.
  750. <!--$v=2218427-->Optimum switching as an enhancement has been made in the
  751. <!--$v=2221633-->IOS code to optimize TCP/IP or IP
  752. <!--$v=2224839-->switching.  The optimum switching
  753. <!--$v=2227496-->cache used a different lookup mechanism
  754. <!--$v=2229924-->than the standard fast cache does
  755. <!--$v=2232351-->to much quicker find the entries in the
  756. <!--$v=2234917-->cache.  So when an entry is being formed in
  757. <!--$v=2238306-->the optimum cache by the same process switching procedure we
  758. <!--$v=2241512-->saw before, we can now guarantee to find a
  759. <!--$v=2244444-->lookup for a given destination network in four
  760. <!--$v=2247330-->database lookup cycles.  It uses an 
  761. <!--$v=2250902-->8-bit lookup cycle, which means with a standard
  762. <!--$v=2254338-->TCP/IP address of 32-bits, I should be able to find a corresponding
  763. <!--$v=2257590-->match for this particular destination at work
  764. <!--$v=2260934-->and as a maximum four lookup cycles.
  765. <!--$v=2263682-->In general, we do route summarization
  766. <!--$v=2266247-->and other forms of consolidating of routing information,
  767. <!--$v=2268629-->so usually I will find an entry quicker than this anyway.
  768. <!--$v=2271286-->Once I've found
  769. <!--$v=2274080-->the information in the optimum cache, which has exactly the same
  770. <!--$v=2277057-->information as a fast cache, I will then make
  771. <!--$v=2279760-->the same MAC header rewrites available and pass the packet out of the outbound
  772. <!--$v=2283332-->interface.
  773. <!--$v=2285852-->The next form of switching we spoke about was NetFlow switching.
  774. <!--$v=2288463-->This is a new paradigm in terms of switching information between a
  775. <!--$v=2292035-->router's ports.  As you may have noticed by now, routing
  776. <!--$v=2295608-->before or switching paths before on the other
  777. <!--$v=2298265-->platforms, has been based on the destination network information alone 
  778. <!--$v=2301746-->as the sole piece of information we correspond
  779. <!--$v=2304403-->to the information in the routing table.
  780. <!--$v=2306922-->With NetFlow, we now look at much more information.  
  781. <!--$v=2309991-->We'll see how this works now.  Before we do, let's define
  782. <!--$v=2312968-->what a NetFlow really means.  It's a unidirectional sequence of
  783. <!--$v=2316358-->packets between a given source and destination.
  784. <!--$v=2318740-->So it's not necessarily a session between two devices, 
  785. <!--$v=2322267-->but the unidirectional flow of packets between
  786. <!--$v=2325061-->two devices in a given direction.
  787. <!--$v=2328084-->The things I need to do to characterize NetFlows -  
  788. <!--$v=2331565-->I look at the granularity, how far and how much information do I
  789. <!--$v=2335092-->use to differentiate different flows.  
  790. <!--$v=2337474-->What starts and stops
  791. <!--$v=2339856-->a flow, and how quickly will I age out this information in my cache.
  792. <!--$v=2343429-->To get some information as to why this is important,
  793. <!--$v=2346177-->a recent study on the Internet backbone showed
  794. <!--$v=2348925-->that the average flow length is some 21 packets
  795. <!--$v=2352269-->long and lasts an order of ten or 20 milliseconds.
  796. <!--$v=2355750-->Therefore, they're very short in length.  Things like DNS
  797. <!--$v=2359323-->lookups can be seen as a flow, or a Web
  798. <!--$v=2362163-->link to a Web host where I download
  799. <!--$v=2365461-->just a packet of information or a page of information that moves to another Web
  800. <!--$v=2368850-->host, again will be deemed as a  flow of information.
  801. <!--$v=2372057-->If we look at the granularity from a
  802. <!--$v=2375629-->data perspective, if we look all the way up to the application
  803. <!--$v=2378790-->layer, this is the layer we can look up to, to determine one flow from
  804. <!--$v=2382225-->a different flow and we'll see how that matters in a few moments.
  805. <!--$v=2385752-->In the IP header, the information we will use will be the
  806. <!--$v=2389142-->destination IP address, the source IP address,
  807. <!--$v=2391799-->and the protocol field.  Is it a 
  808. <!--$v=2394455-->TCP, UDP, or IGMP type of packet?  
  809. <!--$v=2397341-->The slide here shows the various
  810. <!--$v=2400227-->protocol numbers and the corresponding types of IP
  811. <!--$v=2403616-->protocol that could be being used.
  812. <!--$v=2406273-->If I'm using UDP as a transport, I will then use a
  813. <!--$v=2409800-->source UDP port number and a destination
  814. <!--$v=2412915-->UDP port number.  The source number is always a random number
  815. <!--$v=2416304-->greater than 1024.  The destination
  816. <!--$v=2419602-->UDP port number will be determined by the type of application
  817. <!--$v=2422625-->or the type of device I'm connecting to.
  818. <!--$v=2425923-->Common ones would be 53
  819. <!--$v=2428397-->for domain-name services,
  820. <!--$v=2431008-->69 for TFTP, or Trivial File Transfer Protocol,
  821. <!--$v=2434077-->and maybe 161 for
  822. <!--$v=2436504-->SNMP or the Simple Network Management Protocol.
  823. <!--$v=2439344-->If my application is using
  824. <!--$v=2442047-->TCP as a reliable transport mechanism, I will use the
  825. <!--$v=2445482-->source and destination TCP port numbers.
  826. <!--$v=2448688-->Again, the source number will be a random number greater than
  827. <!--$v=2452261-->1024 and the destination number will be a
  828. <!--$v=2454964-->well-known socket number appropriate with the application.
  829. <!--$v=2457483-->Some common ones to look out for will be such as number
  830. <!--$v=2460735-->80, which is World Wide Web traffic, or 23, which is
  831. <!--$v=2464308-->Telnet, or 21, which is FTP.
  832. <!--$v=2467148-->Now we've decided what can actually
  833. <!--$v=2470034-->define a flow from one flow to another on an application
  834. <!--$v=2473011-->basis, let's look at how the router will now determine
  835. <!--$v=2475530-->when a flow starts and when a flow
  836. <!--$v=2477912-->stops.  The start of a NetFlow is usually based on the
  837. <!--$v=2481027-->new entry being formed in the NetFlow cache and we'll see how this
  838. <!--$v=2484508-->happens in a few moments.  Stopping or
  839. <!--$v=2487165-->aging out or deleting an entry in the NetFlow cache can happen through two
  840. <!--$v=2490692-->methods, either using the protocol fields, 
  841. <!--$v=2493211-->like in TCP, or the fact that we age out the
  842. <!--$v=2496234-->cache after a relatively short period of time.
  843. <!--$v=2499349-->If we look at the initialization
  844. <!--$v=2501868-->of a TCP/IP flow, this is based when a
  845. <!--$v=2505441-->packet starts a session and the SYN 
  846. <!--$v=2508326-->flag, or the synchronization flag, is set by a
  847. <!--$v=2511166-->starting device.  In this example we have Bob and Jane.
  848. <!--$v=2514739-->Bob wishes to connect to Jane's machine.
  849. <!--$v=2517350-->So we send a packet between Bob's PC and Jane's
  850. <!--$v=2520923-->PC with the SYN flag sets.
  851. <!--$v=2523351-->That initial session is enough
  852. <!--$v=2525870-->to enter an entry in the NetFlow cache.
  853. <!--$v=2528710-->When Jane responds or Jane's machine responds
  854. <!--$v=2531779-->with the SYN and the ACK flag set,
  855. <!--$v=2534435-->again, this is the opposite but corresponding flow for this session.
  856. <!--$v=2537871-->Now we have all the entry we need to start
  857. <!--$v=2540573-->this NetFlow.
  858. <!--$v=2543047-->The other example in UDP, 
  859. <!--$v=2545978-->where I don't have SYN flags, is to look
  860. <!--$v=2548910-->at the fact that we've now started a NetFlow with a
  861. <!--$v=2551337-->unique source and destination address going to either the
  862. <!--$v=2554590-->same or a different destination network.
  863. <!--$v=2557109-->As long as the application source port socket numbers
  864. <!--$v=2560590-->are different, and destination socket numbers are
  865. <!--$v=2563201-->different, we can determine this is a new entry
  866. <!--$v=2566361-->and start a new entry in the cache.  And this is for UDP because UDP
  867. <!--$v=2569751-->has no concept of a connection-oriented SYN and
  868. <!--$v=2573324-->acknowledge-type scenario to start the session.
  869. <!--$v=2575797-->When the
  870. <!--$v=2578408-->TCP/IP session finishes, we use the FIN flag
  871. <!--$v=2581569-->in the option field to determine that
  872. <!--$v=2583996-->we've decided this session needs to end and the
  873. <!--$v=2586745-->TCP/IP session needs to be broken.  Again, with the same example
  874. <!--$v=2590317-->now, if Bob's PC wishes to terminate the session with Jane's
  875. <!--$v=2593890-->PC, we can see that we've sent a packet with a FIN flag set.
  876. <!--$v=2597463-->Jane's PC would then respond
  877. <!--$v=2600486-->with the FIN and the ACK flag set.  Again, this is all the information we
  878. <!--$v=2604013-->need to empty this entry from the cache because
  879. <!--$v=2606853-->that initial random source socket number will never
  880. <!--$v=2610243-->again occur in the near-term 
  881. <!--$v=2613220-->future, and therefore we know that this session has finally finished
  882. <!--$v=2616701-->and we can delete that entry from the cache.
  883. <!--$v=2619495-->In again, UDP,
  884. <!--$v=2622106-->we don't have the luxury of a FIN flag,
  885. <!--$v=2624625-->so what we decide to do here is to much more aggressively
  886. <!--$v=2627465-->age out entries in the cache.  And typically,
  887. <!--$v=2630168-->entries in the NetFlow cache are aged out after ten
  888. <!--$v=2633420-->seconds.  Again, if more memory is required by
  889. <!--$v=2636351-->the NetFlow cache and therefore less is available to the overall
  890. <!--$v=2639512-->system, we will start aggressively or more aggressively aging out these entries.
  891. <!--$v=2643039-->And this can be tuned to a very small
  892. <!--$v=2645787-->granularity of age out time.  It should be noted,
  893. <!--$v=2649039-->however, if we tune the age
  894. <!--$v=2651696-->characteristics of the cache to too small a value, this means
  895. <!--$v=2654765-->that as a session may continue
  896. <!--$v=2657376-->after the entry and the cache has been deleted, we will need to go through
  897. <!--$v=2660765-->process switching to re-initialize a NetFlow
  898. <!--$v=2663239-->cache as you will see in a few moments, and therefore take the 
  899. <!--$v=2665987-->performance hit this could involve on the router.
  900. <!--$v=2668415-->Let's look therefore how
  901. <!--$v=2671163-->NetFlow switching is accomplished on this 7500
  902. <!--$v=2674141-->series.  An incoming packet is now processed and
  903. <!--$v=2677713-->passed into the packet buffers in the SRAM
  904. <!--$v=2680095-->area.  As we can see now, we look at many more values
  905. <!--$v=2683164-->to determine what we should do with this
  906. <!--$v=2685546-->packet.  We'll look at the destination network, the source
  907. <!--$v=2689119-->network, the source - sorry, the port
  908. <!--$v=2691913-->type or the protocol type, in this case TCP,
  909. <!--$v=2694295-->the destination port number, and the source port number.
  910. <!--$v=2697776-->So in this case the destination port
  911. <!--$v=2700204-->is WWW or port 80,
  912. <!--$v=2702906-->and the source is 2112.
  913. <!--$v=2705380-->If we look at the entry in the NetFlow cache,   
  914. <!--$v=2707945-->on first glance, it may seem we have the appropriate entry in the NetFlow
  915. <!--$v=2711243-->cache.  But as you'll see, if you look carefully at
  916. <!--$v=2714082-->the source socket number, this is a different number.
  917. <!--$v=2717014-->Therefore, this station, this same workstation, has
  918. <!--$v=2720404-->connected to the same destination network but with a
  919. <!--$v=2723702-->new World Wide Web page or new application
  920. <!--$v=2727091-->session.  So this is characterized as a new flow.
  921. <!--$v=2730435-->If the entry does not exist
  922. <!--$v=2733046-->in the NetFlow cache, I now look at my routing table
  923. <!--$v=2735428-->through standard process switching.  I find the
  924. <!--$v=2738084-->information in my routing table for just the destination network
  925. <!--$v=2741520-->and a MAC header rewrite portion, and I pass this information
  926. <!--$v=2744634-->into the NetFlow cache.  Before I do this,
  927. <!--$v=2748024-->however, I will also pass this first packet
  928. <!--$v=2750543-->against any access control list or
  929. <!--$v=2753337-->queuing or accounting information I need to interrogate the packet
  930. <!--$v=2756498-->to, and as long as the packet passes the access control lists,
  931. <!--$v=2760025-->I will now use that information to
  932. <!--$v=2762544-->generate a complete NetFlow cache entry.  This does 
  933. <!--$v=2765613-->mean if a packet does not pass an access control list
  934. <!--$v=2768499-->in the process switching
  935. <!--$v=2771201-->path, I will not form a NetFlow cache.
  936. <!--$v=2773766-->This is a mechanism that can significantly improve the performance
  937. <!--$v=2776881-->of access control lists on devices running NetFlow
  938. <!--$v=2780408-->switching.  I will now enter the values
  939. <!--$v=2783981-->in the NetFlow cache, pass the packet in packet buffers
  940. <!--$v=2787416-->with the new MAC header rewrite information to the outbound
  941. <!--$v=2790577-->interface, and perform the CRC check as the packet
  942. <!--$v=2793325-->leaves the outbound interface.
  943. <!--$v=2795707-->I now have an entry in the NetFlow
  944. <!--$v=2798226-->cache, so a subsequent packet from the same flow coming in
  945. <!--$v=2801433-->will match all five values with the entry in the NetFlow
  946. <!--$v=2804456-->cache.  I can very quickly make my NetFlow
  947. <!--$v=2806883-->MAC header rewrite information changes
  948. <!--$v=2809311-->and pass the packet out of the outbound interface.
  949. <!--$v=2812472-->This is a very detailed slide that looks at
  950. <!--$v=2815861-->the types of values of information I can derive from the NetFlow
  951. <!--$v=2819251-->switching path accounting and statistics
  952. <!--$v=2822320-->application, which is built into NetFlow switching.
  953. <!--$v=2824885-->A vast array of information is available, such as how many flows
  954. <!--$v=2828412-->per second, how many given flows with the type of protocol, and between which
  955. <!--$v=2831618-->source and destination network devices.  
  956. <!--$v=2834183-->This allows me to very clearly characterize the
  957. <!--$v=2837160-->types of traffic flows I have on a given network running NetFlow
  958. <!--$v=2840687-->switching.  To assimilate -
  959. <!--$v=2843894-->to take this information and allow it to be assimilated into a network
  960. <!--$v=2847467-->management package, or billing package, Cisco has defined
  961. <!--$v=2850490-->a set of NetFlow collectors that allow me
  962. <!--$v=2853879-->to export the information from a router into these export
  963. <!--$v=2857406-->devices, such as RMON probes or the Cisco Netsys
  964. <!--$v=2860887-->products to allow us then to analyze this
  965. <!--$v=2864231-->information and derive the accounting or statistical information we need
  966. <!--$v=2867438-->for the traffic in my network.  This also means that the memory
  967. <!--$v=2870965-->of the router does not need to be utilized to store this
  968. <!--$v=2873804-->information, and this can be a very large amount of information
  969. <!--$v=2876186-->in a very large enterprise network.
  970. <!--$v=2878660-->Okay, that was NetFlow
  971. <!--$v=2881866-->switching.  The next type of switching I'd like to discuss is Cisco
  972. <!--$v=2885439-->Express Forwarding.  Cisco Express Forwarding is a very
  973. <!--$v=2888645-->new type of switching mechanism we have
  974. <!--$v=2892172-->on the high-end Cisco router platforms.
  975. <!--$v=2894692-->The drivers behind the creation of 
  976. <!--$v=2897669-->CEF are many.  But mainly they're looking at how we
  977. <!--$v=2901104-->currently do things in the cache-based systems we've seen in the
  978. <!--$v=2904311-->presentation up to now.  Caching as a
  979. <!--$v=2907059-->mechanism for finding information, and storing
  980. <!--$v=2909716-->information, is optimized in networks where there are not too many
  981. <!--$v=2913059-->entries.  That can be fairly large but not too many entries, and where the entries
  982. <!--$v=2916220-->don't have to change very often, or they're not new entries all the time.
  983. <!--$v=2919793-->Because every time we either change an entry
  984. <!--$v=2922175-->in the cache mechanism, or there is a new
  985. <!--$v=2924694-->entry, we have to go through that initial process switching
  986. <!--$v=2927167-->mode, which can slow down the CPU and become an
  987. <!--$v=2930053-->overhead in the performance of the router.  There's various
  988. <!--$v=2933397-->other types of information that we may wish to derive
  989. <!--$v=2936191-->from the packet as well, which is not so easily done in the
  990. <!--$v=2938802-->cache-based mechanism.  And also, the
  991. <!--$v=2941962-->inability to do various forms of load showing on a per-packet basis
  992. <!--$v=2945535-->in caching-based mechanisms like fast and optimum
  993. <!--$v=2948512-->caching, sometimes makes optimization from a network design
  994. <!--$v=2951856-->perspective hard.  So 
  995. <!--$v=2954421-->Cisco Express Forwarding is an attempt to meet the
  996. <!--$v=2956803-->requirements of all of these limitations we have in cache-based
  997. <!--$v=2960147-->systems.  The basic concepts of
  998. <!--$v=2963399-->Cisco Express Forwarding is to build adjacencies
  999. <!--$v=2965918-->with neighbors.  These adjacencies
  1000. <!--$v=2968575-->are stored in an adjacency table,
  1001. <!--$v=2971048-->also to create a Forwarding Information
  1002. <!--$v=2973522-->Base.  The forwarding information base tells my router
  1003. <!--$v=2976682-->which destination
  1004. <!--$v=2979110-->networks can be found with which adjacencies.
  1005. <!--$v=2981584-->So I have these two data structures.  I have the
  1006. <!--$v=2985111-->forwarding information base and the adjacency
  1007. <!--$v=2988271-->table which are the two cornerstones of the
  1008. <!--$v=2991294-->Cisco Express Forwarding mechanism.  One thing about
  1009. <!--$v=2994455-->Cisco Express Forwarding, it never requires
  1010. <!--$v=2997157-->the RSP and the 7500 to ever process packets
  1011. <!--$v=2999951-->in switching mode.  This is because CEF, or
  1012. <!--$v=3002700-->Cisco Express Forwarding, is topology driven.
  1013. <!--$v=3005494-->We don't have to wait until traffic generates
  1014. <!--$v=3008700-->requirements to do switching before we enter information in
  1015. <!--$v=3011678-->caches.  Therefore, the moment we turn the router on
  1016. <!--$v=3014563-->and the routing protocols and the adjacent neighbors
  1017. <!--$v=3016945-->start communicating with my router, I can
  1018. <!--$v=3019510-->build my forwarding information base and my adjacency table
  1019. <!--$v=3022762-->and that stays there until a routing
  1020. <!--$v=3025556-->topology or topology change occurs.
  1021. <!--$v=3028259-->Adjacencies
  1022. <!--$v=3030778-->are nodes if they - that are adjacent to a router in one
  1023. <!--$v=3034259-->Layer-2 hop.  That means they're directly connected
  1024. <!--$v=3036916-->to an interface or a media which is one hop away from the given router.
  1025. <!--$v=3040397-->The adjacency table is populated by both routing
  1026. <!--$v=3043924-->table - sorry - routing protocol information, and also the
  1027. <!--$v=3047085-->ARP cache we have, where directly connected devices on broadcast
  1028. <!--$v=3050612-->media, such as Ethernet locally, use  the ARP
  1029. <!--$v=3054047-->mechanism to announce their existence.  We have
  1030. <!--$v=3057070-->various types of adjacency: normal adjacency for normally connected
  1031. <!--$v=3060643-->devices; null adjacencies, where basically we have
  1032. <!--$v=3063666-->set up adjacent devices within the
  1033. <!--$v=3066873-->router where we used to just throw away packets, like a bit bucket-type 
  1034. <!--$v=3070445-->application.  We have glean-type adjacencies
  1035. <!--$v=3073194-->where devices are locally
  1036. <!--$v=3076171-->connected to the router.  We have punt-type
  1037. <!--$v=3079515-->adjacencies.  This is where I've decided that in this
  1038. <!--$v=3081942-->case, this particular type of adjacency or this particular
  1039. <!--$v=3085424-->type of connection requires me to go to
  1040. <!--$v=3088355-->RSP-based switching because of some media-characteristic
  1041. <!--$v=3091378-->change I have to take care of which can't be
  1042. <!--$v=3094172-->accomplished by Cisco Express Forwarding.
  1043. <!--$v=3096554-->We then also have the incomplete type of adjacency
  1044. <!--$v=3099486-->where I don't have enough information necessarily available
  1045. <!--$v=3102005-->to make my MAC header rewrites, and again I will go
  1046. <!--$v=3104936-->back to standard process switching.  These last two are the unusual
  1047. <!--$v=3108326-->two in terms of Cisco Express Forwarding, where
  1048. <!--$v=3111441-->punt and incomplete are not normally found on networks 
  1049. <!--$v=3114830-->using CEF.  Because the whole concept of CEF
  1050. <!--$v=3117533-->is, I decouple the process of doing a switching
  1051. <!--$v=3120373-->path process from the RSP which is doing my routing
  1052. <!--$v=3123625-->protocol applications and functions.  
  1053. <!--$v=3126831-->If we look at the adjacency
  1054. <!--$v=3129763-->table, it contains - it's indexed
  1055. <!--$v=3132694-->by Layer-3 addresses and populated
  1056. <!--$v=3135076-->by the ARP table, or as I said earlier, the protocol
  1057. <!--$v=3137962-->running RSPF or EHRP or your other IGP
  1058. <!--$v=3141535-->or BGP routing protocol.  I have my new
  1059. <!--$v=3144970-->MAC header rewrite information for that given
  1060. <!--$v=3147627-->adjacent node.  I have the connecting
  1061. <!--$v=3150009-->interface, the physical interface on a router that gets me to the adjacent
  1062. <!--$v=3153398-->node, the NTU size of the packets going through
  1063. <!--$v=3156604-->that interface - for example, the maximum size of
  1064. <!--$v=3159582-->an Ethernet or the maximum size on a
  1065. <!--$v=3162009-->serial link - and a number of counters which tell me how many packets have been
  1066. <!--$v=3165582-->processed for that given adjacency.
  1067. <!--$v=3168743-->The Forwarding Information Base is a
  1068. <!--$v=3171766-->table which is based, again, indexed on IP addresses,
  1069. <!--$v=3174606-->and is using the same mtrie lookup mechanism we
  1070. <!--$v=3178179-->saw in optimum switching.  Which means, again, I have the
  1071. <!--$v=3180790-->ability to find entries in my forwarding information
  1072. <!--$v=3183996-->base very quickly.  The contents of the forwarding information base are 
  1073. <!--$v=3187523-->ordered such that we have prefixes
  1074. <!--$v=3190088-->or destination networks pointing to adjacencies
  1075. <!--$v=3193019-->which then match with the entries in my adjacency tables.
  1076. <!--$v=3196592-->If we look at how
  1077. <!--$v=3200073-->Cisco Express Forwarding works, information derived from
  1078. <!--$v=3203005-->RSPF or as I said, any other EGP or IGP, 
  1079. <!--$v=3206395-->is utilized to form my forwarding information
  1080. <!--$v=3209601-->base.  As long as that information stays
  1081. <!--$v=3211983-->current, the forwarding information base information stays current.
  1082. <!--$v=3215052-->What I have
  1083. <!--$v=3218304-->the ability to do is then pass the forwarding information base
  1084. <!--$v=3221281-->information to all the various line cards if they are using the versatile   
  1085. <!--$v=3224854-->interface processes in my 7500.
  1086. <!--$v=3227327-->This means this information can now be
  1087. <!--$v=3230396-->pre-calculated and then distributed throughout the 7500 chassis.
  1088. <!--$v=3233878-->The adjacency table,
  1089. <!--$v=3236763-->again, is formed by either the routing table or a mechanism such as
  1090. <!--$v=3240336-->ARP to derive the local MAC header rewrite and MTU
  1091. <!--$v=3243451-->information and connected interface type.
  1092. <!--$v=3246107-->So Cisco Express Forwarding,
  1093. <!--$v=3248673-->which is released with mainstream 12.0
  1094. <!--$v=3251054-->code and is available in various RSP-based
  1095. <!--$v=3254444-->code sets, is a mechanism that will enhance the
  1096. <!--$v=3257513-->stability of my router because my RSP
  1097. <!--$v=3260078-->is not doing so much traffic demand-based application
  1098. <!--$v=3262643-->work, and also allows me to distribute this information
  1099. <!--$v=3265666-->throughout the VIP cards on my 7500.
  1100. <!--$v=3268048-->However, I can do this distribution function
  1101. <!--$v=3271254-->with both optimum, and fast, and NetFlow switching
  1102. <!--$v=3273728-->as well.  With the VIP2-40s and the VIP2-50
  1103. <!--$v=3277209-->cards, and in fact, most of the VIP processor cards that are available
  1104. <!--$v=3280186-->today, I can actually accomplish a very similar
  1105. <!--$v=3282889-->concept.  Whereby the fast, or optimum, or NetFlow
  1106. <!--$v=3286370-->cache is pushed into that area of dynamic RAM we
  1107. <!--$v=3289897-->saw before on the VIP card - which means I
  1108. <!--$v=3292600-->copy the same cache information down to the VIP processes.
  1109. <!--$v=3295668-->This means, if a switching
  1110. <!--$v=3298234-->decision has to happen locally on a VIP, whereby the interface - 
  1111. <!--$v=3301531-->input interface and output interface are on the same
  1112. <!--$v=3304509-->VIP, I don't need to take my packets up across the various
  1113. <!--$v=3308082-->buses to the RSP to be passed down to the same VIP card
  1114. <!--$v=3311288-->again.  This switching mechanism will happen locally.
  1115. <!--$v=3313716-->Also if I'm passing packets between two
  1116. <!--$v=3317151-->VIPs, what I can now do is just use the actual packet memory
  1117. <!--$v=3320724-->on the RSP and not interrupt the CPU of the
  1118. <!--$v=3323518-->RSP to actually forward the packets between VIP cards.
  1119. <!--$v=3326266-->This means I can get significantly faster
  1120. <!--$v=3329839-->processing of packets from a packet-per-second
  1121. <!--$v=3333274-->perspective, because I don't have to interrupt the CPU.
  1122. <!--$v=3335794-->Each VIP card has its own CPU to handle
  1123. <!--$v=3338496-->these packets in the same way as the RSP would've done in the first place.
  1124. <!--$v=3341886-->It means I can get anything up to, with packet 
  1125. <!--$v=3345046-->oversight, 120,000 packets per
  1126. <!--$v=3347795-->second per VIP - which means, on an overall
  1127. <!--$v=3351321-->system wide architecture, I can get very, very
  1128. <!--$v=3353703-->high packet-per-second figures in a distributed
  1129. <!--$v=3356085-->fashion using this mechanism.  If we actually look
  1130. <!--$v=3359475-->at the various switching paths available to the 7500
  1131. <!--$v=3363048-->family, process switching occurs at about 10,000 packets per
  1132. <!--$v=3366620-->second.  Plus we can see, it moves anything up to, theoretically,
  1133. <!--$v=3370193-->a million packets per second with a fully distributed system.
  1134. <!--$v=3373445-->It's highly unlikely you could actually achieve this kind of figure
  1135. <!--$v=3376606-->because the types of traffic flows would almost suddenly preclude you
  1136. <!--$v=3379263-->going from always the same input and output
  1137. <!--$v=3381828-->VIP card.  But it is theoretically possible.
  1138. <!--$v=3384439-->More often it's normal that we'll get figures in excess of
  1139. <!--$v=3387874-->300,000, 400,000, 500,000 packets per second with a carefully designed
  1140. <!--$v=3391447-->network and a card - carefully laid-out 7500.
  1141. <!--$v=3394149-->If we compare
  1142. <!--$v=3396577-->CEF to the other optimum and NetFlow
  1143. <!--$v=3399096-->and fast switching, CEF works at 
  1144. <!--$v=3402211-->the same speed as optimum switching.  So in this
  1145. <!--$v=3404913-->case, on the RSP, I would get 275,000
  1146. <!--$v=3408211-->packets per second and the same figures I would get on the standard
  1147. <!--$v=3411418-->VIP card of around 90,000 packets per
  1148. <!--$v=3413891-->second, for say, packet over SONET on a VIP2-40.
  1149. <!--$v=3417464-->Okay.  We've looked at how all the routers
  1150. <!--$v=3420991-->now go through the process of switching packets in the various switching
  1151. <!--$v=3424472-->paths and the various hardware applications.  We will now look at the
  1152. <!--$v=3427587-->things that can affect the performance of your network.
  1153. <!--$v=3430243-->The five things I've chosen here are queuing,
  1154. <!--$v=3433725-->compression, filtering, encryption, and accounting.
  1155. <!--$v=3437023-->There are four types
  1156. <!--$v=3439679-->of basic queuing mechanisms available on the router today.
  1157. <!--$v=3442657-->The default is First In, First Out
  1158. <!--$v=3445680-->queuing.  We have priority queuing, custom queuing,
  1159. <!--$v=3448611-->and Weighted Fair Queuing.  It should be noted
  1160. <!--$v=3451543-->at this point though, queuing is only a mechanism that needs to be
  1161. <!--$v=3454429-->utilized if I have congestion on a
  1162. <!--$v=3456856-->network.  If there is no congestion, I don't need to have to worry
  1163. <!--$v=3460108-->about going through the process of queuing.  So queuing
  1164. <!--$v=3462857-->is only a mechanism that needs to be adopted if I know I have congestion in my
  1165. <!--$v=3465926-->network.  The first type of queuing
  1166. <!--$v=3469086-->I will mention is priority queuing.  Priority queuing is a process
  1167. <!--$v=3472292-->of defining different types of traffic into
  1168. <!--$v=3474995-->different priority queues:  low, normal, medium, and high-priority
  1169. <!--$v=3478568-->queue.  In this case,
  1170. <!--$v=3481591-->any traffic in the high-priority queue will get complete
  1171. <!--$v=3485026-->bandwidth.  Whereas anything in the lower-priority
  1172. <!--$v=3487454-->queues will have to wait until the high-priority queue is
  1173. <!--$v=3489836-->empty before they see any available bandwidth.
  1174. <!--$v=3492218-->This is okay in some environments, but is not generally recommended
  1175. <!--$v=3495561-->as priority queuing means that one application can
  1176. <!--$v=3498905-->deprive all other applications of any network bandwidth.
  1177. <!--$v=3502020-->A more fair mechanism is custom
  1178. <!--$v=3505409-->queuing.  On a protocol basis I
  1179. <!--$v=3507929-->can assign up to 16 different custom
  1180. <!--$v=3510448-->queues, and configure a percentage of interface
  1181. <!--$v=3513059-->bandwidth per queue to allow
  1182. <!--$v=3515899-->for each different application type or protocol type.  So I
  1183. <!--$v=3518647-->can say that SNA may get 20% of my
  1184. <!--$v=3521258-->bandwidth, TCP/IP gets 30%, and all my
  1185. <!--$v=3524373-->remaining protocols get 50%, or some other user-definable
  1186. <!--$v=3527533-->variation and distribution of the bandwidth
  1187. <!--$v=3531014-->available.  This means that no one application can ever completely
  1188. <!--$v=3534496-->starve all other applications of bandwidth on the network, and I
  1189. <!--$v=3538068-->know how much bandwidth each application will get.
  1190. <!--$v=3540954-->Weighted Fair Queuing is another
  1191. <!--$v=3544298-->mechanism which by default is turned on for all interfaces
  1192. <!--$v=3547138-->at two megabits per second or slower.
  1193. <!--$v=3550069-->This is another fair queue mechanism which looks at the
  1194. <!--$v=3553551-->relative traffic types going across a given
  1195. <!--$v=3556345-->interface.  It will fairly allocate the bandwidth based
  1196. <!--$v=3559093-->on the heavy or light loads that a given session
  1197. <!--$v=3562162-->is exhibiting on the network.  In general, what it
  1198. <!--$v=3565643-->means is, heavier sessions get less bandwidth,
  1199. <!--$v=3568666-->allowing smaller sessions, like interactive
  1200. <!--$v=3571094-->sessions, to get more available bandwidth.
  1201. <!--$v=3573613-->In general, an FTP-type
  1202. <!--$v=3576132-->session is more elastic than a Telnet
  1203. <!--$v=3578835-->session or maybe a voice over IP session that
  1204. <!--$v=3582133-->requires very quick and reliable amounts of bandwidth available to
  1205. <!--$v=3585660-->it, and predicts the amounts of bandwidth to it, and cannot afford
  1206. <!--$v=3588775-->to be kept behind a very large FTP transfer, for
  1207. <!--$v=3591981-->example.  So Weighted Fair Queuing is a mechanism that is on by
  1208. <!--$v=3595370-->default on IOS code 11.1 and
  1209. <!--$v=3598943-->later, and that allows you to have a very fair mechanism for distributing
  1210. <!--$v=3602241-->traffic across your various interface processes.
  1211. <!--$v=3605356-->Random Early
  1212. <!--$v=3607829-->Detection is not a queue-management mechanism but a congestion-avoidance
  1213. <!--$v=3610944-->mechanism.  As I said right in the beginning of this part of the
  1214. <!--$v=3614288-->discussion, queue mechanisms are about dealing with congestion on
  1215. <!--$v=3617723-->my network.  Random early detection is
  1216. <!--$v=3620426-->an attempt to preclude or prevent congestion from occurring
  1217. <!--$v=3623815-->in the first place.  The way random early detection works
  1218. <!--$v=3627388-->is, is that I have the ability to set
  1219. <!--$v=3630320-->precedence using the type of service field in the IP
  1220. <!--$v=3633526-->header to classify traffic into a certain classification
  1221. <!--$v=3636961-->of traffic.  And what I can then do is
  1222. <!--$v=3639664-->say that, if a network interface becomes congested,
  1223. <!--$v=3642275-->I will randomly discard given
  1224. <!--$v=3645160-->frames from a low-priority or low-precedence traffic
  1225. <!--$v=3648596-->stream.  TCP/IP, for example,
  1226. <!--$v=3651161-->is an elastic protocol.  That means I have a sliding window
  1227. <!--$v=3654138-->mechanism that means I can send more and more packets without having
  1228. <!--$v=3657711-->to wait for an acknowledgment from the destination device.
  1229. <!--$v=3660368-->If I start throwing away packets from
  1230. <!--$v=3663528-->that session, that window size will decrease in size.
  1231. <!--$v=3666185-->And eventually I will get down to the point where
  1232. <!--$v=3669391-->only one packet will be sent until I receive an
  1233. <!--$v=3672231-->acknowledgment.  This mechanism alone will slow down the flow
  1234. <!--$v=3675804-->of less-important or low-precedence traffic
  1235. <!--$v=3678323-->streams and allow high-precedence traffic streams
  1236. <!--$v=3681530-->and things like RSVP multimedia for video
  1237. <!--$v=3685057-->conferencing, for example, to get as much bandwidth as they 
  1238. <!--$v=3687622-->require, alleviating congestion before
  1239. <!--$v=3690095-->it occurs and therefore not having to worry so much about congestion
  1240. <!--$v=3693531-->management mechanisms in queuing.  So random early
  1241. <!--$v=3696874-->discard, or random early detection rather, is a mechanism
  1242. <!--$v=3699760-->that will stop congestion happening and allow me to classify my
  1243. <!--$v=3703287-->traffic.
  1244. <!--$v=3705990-->Compression is another type of 
  1245. <!--$v=3708967-->application which can seriously affect the performance of  a
  1246. <!--$v=3711486-->router.  Compression is a process of taking
  1247. <!--$v=3714280-->packets and looking for repeating sequences in the information
  1248. <!--$v=3717670-->stream and then replacing that with some smaller
  1249. <!--$v=3720830-->value of information that can be then reconstituted at the
  1250. <!--$v=3724174-->remote end back into the original data.
  1251. <!--$v=3727060-->The three types of compression we use are header compression,
  1252. <!--$v=3729946-->per interface line
  1253. <!--$v=3732740-->compression, or per virtual circuit payload
  1254. <!--$v=3735580-->compression - the supported WAN
  1255. <!--$v=3738099-->encapsulations for header compression of frame relay,
  1256. <!--$v=3740985-->PPP, and X.25, for line
  1257. <!--$v=3744512-->or link compression, PPP,
  1258. <!--$v=3747764-->HDLC, or LAPB, and for
  1259. <!--$v=3750146-->payload or per virtual circuit
  1260. <!--$v=3752527-->compression, frame relay, and X.25.
  1261. <!--$v=3755276-->If we look very quickly at the
  1262. <!--$v=3758207-->link type of compression, which is the most common type of compression
  1263. <!--$v=3761139-->used, the two types of compression algorithms we have are the
  1264. <!--$v=3764574-->STAC encryption - compression mechanism, and the
  1265. <!--$v=3767597-->Predictor compression mechanism.  STAC is more appropriate
  1266. <!--$v=3771033-->for lower-speed circuits such as ISDN B channels, 
  1267. <!--$v=3773506-->but is very, very CPU intensive - but tends to use less
  1268. <!--$v=3776896-->memory.  This means if I'm using
  1269. <!--$v=3779278-->STAC as a compression algorithm, I should choose
  1270. <!--$v=3782301-->a platform that has a very fast-working
  1271. <!--$v=3784774-->processor like a 4500 or a 4700
  1272. <!--$v=3787477-->processor.  If I'm using Predictor, it uses less
  1273. <!--$v=3791049-->memory - sorry - it uses more memory, I apologize - it uses
  1274. <!--$v=3794622-->more memory but is less CPU intensive.  So a smaller
  1275. <!--$v=3798103-->processor will be more applicable if I was using Predictor
  1276. <!--$v=3800806-->as my compression algorithm.
  1277. <!--$v=3804379-->The next thing I look at in terms of things that affect performance
  1278. <!--$v=3807493-->are access control lists.  Access control lists are the mechanisms
  1279. <!--$v=3810883-->where I can decide what traffic can flow
  1280. <!--$v=3814181-->between which interfaces and to which destination interfaces.
  1281. <!--$v=3816975-->I can permit and deny traffic coming
  1282. <!--$v=3820044-->into my router and going out of my router.  This
  1283. <!--$v=3822838-->means that packets need to be compared to the entries in the access
  1284. <!--$v=3826411-->control lists to make sure that if a packet is not
  1285. <!--$v=3829297-->allowed to pass through that interface, it can be
  1286. <!--$v=3831862-->discarded.  Depending on how big my access control lists
  1287. <!--$v=3835434-->are, configured on the IOS, the command 
  1288. <!--$v=3837954-->line interface, this can seriously affect the performance
  1289. <!--$v=3840565-->in my router, because every packet on a given
  1290. <!--$v=3842992-->interface which is pointing towards an access control list, needs to be
  1291. <!--$v=3846336-->compared against an access control list.
  1292. <!--$v=3848947-->And the more extensive I make that access control
  1293. <!--$v=3851329-->list, the more information needs to be checked against a given
  1294. <!--$v=3854306-->packet.  So one of the rules of
  1295. <!--$v=3856688-->thumb to give us good performance for the access control lists is to
  1296. <!--$v=3859986-->order my access control lists so the most regularly found packets
  1297. <!--$v=3863330-->in my network are found very quickly in terms of the access
  1298. <!--$v=3866353-->control lists.  And that means these entries will be right
  1299. <!--$v=3868918-->at the top of my list of access controls.
  1300. <!--$v=3871483-->If I can't get away with this and I have to have very
  1301. <!--$v=3874643-->complex, long access control lists,
  1302. <!--$v=3877209-->NetFlow switching is a very good mechanism
  1303. <!--$v=3879636-->to somewhat - allow
  1304. <!--$v=3882934-->me to use complex access control lists and
  1305. <!--$v=3885316-->not solve them, but not have too much of a performance hit, because
  1306. <!--$v=3888889-->only the very first packet in NetFlow is passed
  1307. <!--$v=3891546-->against the access control lists.  Or subsequent
  1308. <!--$v=3894248-->packets are then forwarded normally because the first packet
  1309. <!--$v=3897088-->made it through the access control lists.
  1310. <!--$v=3899561-->So use access control lists.  They're very useful but make
  1311. <!--$v=3901989-->sure they don't become an overbearing performance impact on your
  1312. <!--$v=3905287-->router, because a CPU has to do all this comparing and then just
  1313. <!--$v=3908814-->throw away packets it finally founds - finally finds cannot
  1314. <!--$v=3911975-->be forwarded to one of its outbound interfaces.
  1315. <!--$v=3915089-->Some enhancements to access control
  1316. <!--$v=3917563-->lists are really about when we can do fast or optimum switching
  1317. <!--$v=3920952-->depending on where the access control lists are pointing at and how
  1318. <!--$v=3924479-->extensive these access control lists are.
  1319. <!--$v=3926999-->It's pretty much fair to say that all access control lists, both
  1320. <!--$v=3930251-->simple and extended, can now be fast or
  1321. <!--$v=3932770-->optimum switched, rather than process switched as they were
  1322. <!--$v=3935289-->before.  So in most cases,
  1323. <!--$v=3938083-->we don't have the switching impact, we do have the
  1324. <!--$v=3940603-->CPU overhead of comparing these packets to the access control lists.
  1325. <!--$v=3944038-->Encryption is another very CPU-intensive
  1326. <!--$v=3947382-->application.  Encryption is a process of taking
  1327. <!--$v=3950955-->packets and randomizing sequence
  1328. <!--$v=3953428-->of regularly occurring
  1329. <!--$v=3955902-->packets or - sorry - information in the packet stream,
  1330. <!--$v=3958604-->so that a eavesdropper or
  1331. <!--$v=3961307-->some untrusted part of the network would never be able to extract the actual
  1332. <!--$v=3964834-->data from the data stream.  This again 
  1333. <!--$v=3967490-->requires various algorithms to be utilized to encrypt my traffic
  1334. <!--$v=3971063-->flow.  In this case, what we need to look at is
  1335. <!--$v=3974224-->making sure that only the given destinations or
  1336. <!--$v=3976789-->the given interfaces where I need encryption, actually have encryption
  1337. <!--$v=3980270-->turned on, because this will reduce the impact from the CPU
  1338. <!--$v=3983568-->having to encrypt all packets on a given router.
  1339. <!--$v=3986316-->And we use the crypto-map function to allow us to
  1340. <!--$v=3989522-->assign given interfaces to a given encryption mechanism.
  1341. <!--$v=3992729-->One 
  1342. <!--$v=3995798-->word on encryption before I go on to accounting,
  1343. <!--$v=3998180-->is we should be careful also when I
  1344. <!--$v=4000653-->combine compression and encryption.  If we think
  1345. <!--$v=4004134-->about it, compression is the concept of taking random
  1346. <!--$v=4007707-->packets and making - sorry - encryption is
  1347. <!--$v=4010959-->the concept of taking, repeating packets and randomizing
  1348. <!--$v=4013936-->them.  Compression is a concept of looking for repeating
  1349. <!--$v=4017463-->packets of information and then compressing
  1350. <!--$v=4020349-->them.  Or the way the IOS works is to
  1351. <!--$v=4023052-->encrypt before I compress so all data
  1352. <!--$v=4026166-->that would hit the compression agent would be randomized.
  1353. <!--$v=4028960-->I would find no correspondingly repeating patterns, 
  1354. <!--$v=4031480-->and therefore my compression ratio will be very
  1355. <!--$v=4033999-->low.  Let's look at accounting
  1356. <!--$v=4037297-->for IP and IPX.  Accounting is a
  1357. <!--$v=4040320-->very simple process of looking at a given interface and counting how
  1358. <!--$v=4043572-->many packets and how many bytes flow through an
  1359. <!--$v=4046092-->interface.  But this process can take anything up to
  1360. <!--$v=4049344-->30% performance away from fast and optimum 
  1361. <!--$v=4052046-->switching.  So if you have the requirements to do 
  1362. <!--$v=4054840-->accounting, NetFlow switching for IP certainly is 
  1363. <!--$v=4058092-->an alternative but doesn't have the performance overhead of standard IOS
  1364. <!--$v=4061528-->accounting.  Okay, let's look at
  1365. <!--$v=4064688-->some optimized network design ideas that can help us with some
  1366. <!--$v=4067803-->performance issues.  In this
  1367. <!--$v=4070689-->example with the distributed versus centralized server form, we
  1368. <!--$v=4073804-->can see that all of these central servers are located in the 
  1369. <!--$v=4077102-->FDDI ring, which is connected to the rest of the devices,
  1370. <!--$v=4079850-->the hosts connecting to those servers by a very small
  1371. <!--$v=4082644-->56-kilobit-per-second circuit.  Now in some
  1372. <!--$v=4085988-->examples, this may be the only type of circuit which is
  1373. <!--$v=4088553-->available.  Or in a banking or retail
  1374. <!--$v=4090935-->application, this may be the most cost-effective way of getting my
  1375. <!--$v=4094278-->devices to my servers.  If this is a
  1376. <!--$v=4097714-->limitation, there's various things that can be achieved in load balancing that can actually allow
  1377. <!--$v=4101287-->me to make better use of the available circuits.
  1378. <!--$v=4103897-->Serial-line load balancing can be achieved in
  1379. <!--$v=4107424-->various way.  Process switching allows me to do
  1380. <!--$v=4110264-->packet-by-packet load sharing so that from a given source and 
  1381. <!--$v=4113562-->destination, each alternate packet will be load shared across a
  1382. <!--$v=4117135-->different circuit, if the cost of the circuit
  1383. <!--$v=4119792-->between the two source and destination routers is the
  1384. <!--$v=4122265-->same, and there are no external hops on one or the other of
  1385. <!--$v=4125746-->the load-balancing serial
  1386. <!--$v=4128770-->links.  So as long as I have an equal cost path in two
  1387. <!--$v=4132297-->directions between a source and destination router, I can
  1388. <!--$v=4135365-->load balance across these and with process switching, this would be
  1389. <!--$v=4138572-->done on a per-packet basis.  This is a very fair method and a very
  1390. <!--$v=4141778-->even method of distributing traffic, but I'm having to use process switching
  1391. <!--$v=4145351-->to accommodate this.  Fast and
  1392. <!--$v=4147916-->optimum switching will do this on a per-destination
  1393. <!--$v=4150435-->basis.  In this case, a source
  1394. <!--$v=4153229-->destination network connection will be load shared on 
  1395. <!--$v=4156390-->each new or alternate destination network
  1396. <!--$v=4159734-->device.  If this is the case, what will happen is,
  1397. <!--$v=4163307-->depending on the distribution of size of sessions, I may
  1398. <!--$v=4166467-->or may not get a fair and equal
  1399. <!--$v=4169490-->distribution of traffic across the serial links.
  1400. <!--$v=4171918-->For example, if one of these sessions is a Telnet
  1401. <!--$v=4174712-->session, and one of these sessions is an FTP session,
  1402. <!--$v=4177277-->the Telnet session will go down one link, and the
  1403. <!--$v=4180025-->FTP session will go down the other.  It may be more appropriate
  1404. <!--$v=4183598-->to have both the Telnet and the FTP and
  1405. <!--$v=4186667-->all other Telnet and FTP, vying for the same
  1406. <!--$v=4189186-->bandwidth and allowing the statistical nature of the traffic
  1407. <!--$v=4192164-->to even-out the traffic forwarding.
  1408. <!--$v=4194637-->NetFlow switching allows me, still on a per-flow
  1409. <!--$v=4198027-->basis, load balancing.  This is more fair
  1410. <!--$v=4200409-->than standard fast or optimum switching because each flow is roughly the
  1411. <!--$v=4203981-->same size or statistically the same size, so much
  1412. <!--$v=4206959-->like packet-base load sharing, I can get a better
  1413. <!--$v=4209478-->distribution of traffic across two
  1414. <!--$v=4212180-->load-balancing equal-cost paths between routers.
  1415. <!--$v=4214700-->If I'm using
  1416. <!--$v=4217402-->ISDN, there's two mechanisms I can use to aggregate my
  1417. <!--$v=4220838-->B channels.  Cisco's own Dialer Load Threshold
  1418. <!--$v=4223998-->mechanism, which allows me to bundle together
  1419. <!--$v=4227067-->BRI channels into looking like one 128-kilobit-per-second
  1420. <!--$v=4230457-->pipe, and that's fast switched, or using PPP
  1421. <!--$v=4233984-->multi-link RFC 1990, which again,
  1422. <!--$v=4236869-->can now be fast switched to allow me to fast switch
  1423. <!--$v=4239618-->these packets across a 128-kilobit-per-second or 
  1424. <!--$v=4243099-->greater bundle of ISDN, BRI, or PRI 
  1425. <!--$v=4246168-->channels.
  1426. <!--$v=4249191-->So these are some of the things where I have intrinsic
  1427. <!--$v=4251573-->media restrictions that can allow me to use the IOS
  1428. <!--$v=4254000-->features to better optimize my network design and traffic
  1429. <!--$v=4257207-->forwarding.  Let's look at a few troubleshooting things now that can help us
  1430. <!--$v=4260596-->define when I think my network should be performing okay,
  1431. <!--$v=4263528-->but I seem to have performance issues.
  1432. <!--$v=4266597-->There are various statistics that can be gathered from the interface
  1433. <!--$v=4269116-->processor cards as to how the network is performing or
  1434. <!--$v=4272414-->how the devices connected to the routers are
  1435. <!--$v=4274842-->performing.  First of all we'll look at the buffers
  1436. <!--$v=4277407-->and queues.  The first thing we will look at is the ignore
  1437. <!--$v=4280934-->counter.  The ignore counter is simply when a packet
  1438. <!--$v=4284048-->has been sent to the router for some reason to be
  1439. <!--$v=4286843-->processed, and I have no method of placing this in an 
  1440. <!--$v=4289912-->initial packet buffer.  If we remember
  1441. <!--$v=4292660-->from the discussion of process and fast switching, the first thing we do is to
  1442. <!--$v=4296141-->pass the packet into the packet buffers in the shared memory
  1443. <!--$v=4299302-->area.  If there's no packet
  1444. <!--$v=4301729-->buffers available in the shared memory area, then I cannot
  1445. <!--$v=4304523-->process this packet and I'll have to ignore the packet.
  1446. <!--$v=4307043-->So this means that if for some reason there are no longer 
  1447. <!--$v=4310203-->enough interface processes available in my
  1448. <!--$v=4312814-->packet buffers.  This is the reason I have ignores.  This usually
  1449. <!--$v=4316204-->means that for some reason, I either have 
  1450. <!--$v=4319043-->no way of emptying out those packet buffers
  1451. <!--$v=4321425-->quick enough because my processor can't deal with these quick enough or some
  1452. <!--$v=4324815-->other memory limitation is occurring.  If this is
  1453. <!--$v=4327701-->the case, we need to look at whether we are having too slow a processor
  1454. <!--$v=4331273-->in this router and maybe we need to upgrade the processor in the
  1455. <!--$v=4333701-->router, or maybe something else is utilizing
  1456. <!--$v=4336541-->this memory that we're not aware of.
  1457. <!--$v=4338969-->Input drops are the next thing
  1458. <!--$v=4342175-->we'll look at.  This is where a packet has successfully made it into the
  1459. <!--$v=4345427-->packet buffers, but now for some reason, I can't
  1460. <!--$v=4348175-->transfer this packet into system buffers.  Now this could be quite an
  1461. <!--$v=4351702-->important problem.  System buffers, as we
  1462. <!--$v=4354176-->may remember, is what I use to deal with packets that can be process
  1463. <!--$v=4357428-->switched.  Now these could be normal data packets, like
  1464. <!--$v=4360589-->X.25 packets, or if I'm running DEBUG, IP
  1465. <!--$v=4363108-->packets.  But moreover, they will be routing protocol packets
  1466. <!--$v=4366406-->like RIP and SAP for
  1467. <!--$v=4368879-->IPX and EIGRP or OSPF
  1468. <!--$v=4372040-->in IP networks.  If I
  1469. <!--$v=4374513-->can't have a - I can't find a system buffer to
  1470. <!--$v=4376941-->place my incoming routing protocol packets,  I
  1471. <!--$v=4380331-->could, theoretically, start causing network
  1472. <!--$v=4382712-->instability because I would not be receiving hellos
  1473. <!--$v=4385552-->and acknowledgments in my routing protocol, and I could deem that my topology
  1474. <!--$v=4388850-->of my network has changed if I do not receive enough updates
  1475. <!--$v=4392148-->or acknowledgments in a given period of time.   
  1476. <!--$v=4394759-->So this is quite an important issue to deal with immediately, you
  1477. <!--$v=4397141-->see this.  System buffers, as I said, are used for
  1478. <!--$v=4400347-->process switched packets and they can be tuned by
  1479. <!--$v=4403416-->network operators.  Whereas packet buffers are not tunable
  1480. <!--$v=4406073-->by a command-line interface.  We do not normally
  1481. <!--$v=4409508-->recommend that people tune the system buffers unless they're
  1482. <!--$v=4412486-->guided by the Technical Assistance Center or
  1483. <!--$v=4415188-->some other body that can look at why they're having
  1484. <!--$v=4417982-->these issues and make the appropriate changes.  Normally, if this has
  1485. <!--$v=4421509-->happened, a subsequent release of the IOS may have
  1486. <!--$v=4424258-->fixed the bug or issue that causes this buffer
  1487. <!--$v=4426960-->starvation.  And if you've left your buffer tuning as it
  1488. <!--$v=4429525-->was before, you will no longer be able to take the benefit
  1489. <!--$v=4432090-->of the new IOS changes and also the maximum buffer
  1490. <!--$v=4435297-->performance.  The IOS has been designed to
  1491. <!--$v=4438411-->automatically adjust the size of these buffers in case one buffer
  1492. <!--$v=4441984-->may be starved by another to make sure there's an equal, fair
  1493. <!--$v=4445465-->allotment of buffers in the system buffer area.
  1494. <!--$v=4448168-->Output drops are
  1495. <!--$v=4451603-->the opposite to input drops.  A packet
  1496. <!--$v=4454351-->in system buffers has no way of being placed into the packet buffers
  1497. <!--$v=4457878-->to be placed into an outbound interface
  1498. <!--$v=4460902-->queue.  This means that this packet will now have
  1499. <!--$v=4463512-->to be dropped because I have no means of
  1500. <!--$v=4466032-->passing it out of the system buffers and I don't want to use up system buffer
  1501. <!--$v=4468963-->area memory, if I can  help it.
  1502. <!--$v=4471391-->Again, this is probably caused by the same problem
  1503. <!--$v=4474002-->we had in the initial discussion about ignores.
  1504. <!--$v=4476750-->
  1505. <!--$v=4479361-->Output drops.  This is now where I have the packet successfully in my
  1506. <!--$v=4482796-->packet buffers, but for some reason I have no method
  1507. <!--$v=4485819-->of getting it out to my outbound interface.  This is because either
  1508. <!--$v=4489117-->the input - sorry - the output queue
  1509. <!--$v=4491499-->on the interface is full or the
  1510. <!--$v=4494293-->media connected to the full is so busy I simply cannot pass the 
  1511. <!--$v=4497820-->packet out.  This can be done for various reasons.  
  1512. <!--$v=4500340-->Normally, it will be looked at - this could be down to the fact
  1513. <!--$v=4502767-->the outbound interface media is
  1514. <!--$v=4505195-->congested.  Maybe this is a very highly utilized
  1515. <!--$v=4507897-->Ethernet segment or a congested wide area link.  Maybe some
  1516. <!--$v=4511470-->form of queuing or discard mechanism for a wide area network circuit
  1517. <!--$v=4515043-->would be appropriate.  So I don't fill up my
  1518. <!--$v=4517471-->output queues on my outbound interfaces and I can
  1519. <!--$v=4520265-->flow my traffic, again through these
  1520. <!--$v=4522647-->interfaces.  This again, will be quite serious, if again this was a
  1521. <!--$v=4526219-->routing protocol packet or high-priority packet for an application 
  1522. <!--$v=4529655-->that had to have service delivery.
  1523. <!--$v=4532449-->There are various statistics that
  1524. <!--$v=4535197-->can be looked at.  If I do this show controller cbus command on
  1525. <!--$v=4538633-->the CLI, I will now look at the size and number of
  1526. <!--$v=4541885-->buffers I have in the packet buffers.  But again remember, 
  1527. <!--$v=4544587-->these buffers are allocated when the CPU first
  1528. <!--$v=4547794-->turns on the router, the router's first booted up, and it looks at the number of interfaces
  1529. <!--$v=4551321-->of various types, and then allocates these buffers based on the
  1530. <!--$v=4554893-->MTU size of those interfaces.
  1531. <!--$v=4557458-->This can't be tuned.  In fact, the only way you can really tune this is to
  1532. <!--$v=4560298-->not have the same amount of interfaces in that
  1533. <!--$v=4562863-->router.  By changing the number of interfaces 
  1534. <!--$v=4565383-->I will re-allocate how many buffers available in various buffer
  1535. <!--$v=4568360-->sizes.  If I do show buffers
  1536. <!--$v=4571933-->I now look at these system buffers, and these buffers are tunable.
  1537. <!--$v=4574727-->But again, I would recommend that you either contact your local
  1538. <!--$v=4577842-->SE or the Cisco tech before you start playing
  1539. <!--$v=4581369-->and tuning with these buffers as they can have other serious effects
  1540. <!--$v=4584804-->on network and router performance.
  1541. <!--$v=4587278-->The interface statistics
  1542. <!--$v=4589659-->command, with the show interface, whatever the
  1543. <!--$v=4592682-->interface is - for example, show interface zero - shows me a lot of
  1544. <!--$v=4596118-->information that can again help me to see how my buffers
  1545. <!--$v=4598591-->are being used and how my queues are being used.  We can see how
  1546. <!--$v=4602027-->many output queue drops we have, how many -sorry - 
  1547. <!--$v=4604500-->how many input queue drops we have,
  1548. <!--$v=4607203-->how many ignores, and how many times we just don't have any
  1549. <!--$v=4609585-->buffers to place these packets into.
  1550. <!--$v=4612379-->There's no real hard-and-fast numbers as to when one number means something more
  1551. <!--$v=4615814-->than another number.  The general rule of thumb
  1552. <!--$v=4618196-->is, if I have anything up to about 5% 
  1553. <!--$v=4620578-->to 6% to 7%  ignores compared to my total number
  1554. <!--$v=4624151-->of packets, this is probably acceptable.  Anything up to 8% 
  1555. <!--$v=4627678-->or 9% I would start at least thinking about what's
  1556. <!--$v=4630746-->happening on my network.  Anything above this, I would start
  1557. <!--$v=4633632-->contacting either a network operation team
  1558. <!--$v=4636014-->or the TAC or my local SE to come in and find out what's really going on in 
  1559. <!--$v=4639449-->my network and why I'm dropping or ignoring so many
  1560. <!--$v=4641831-->packets.  These aren't hard-and-fast numbers, they're just a rule of thumb 
  1561. <!--$v=4645267-->to give you some degree of piece of mind as to when to start worrying about
  1562. <!--$v=4648702-->a problem.  Another very useful
  1563. <!--$v=4652275-->command is the show interface stat
  1564. <!--$v=4654886-->command.  This is a non-documented command
  1565. <!--$v=4657726-->and you will not find it by using the help facilities within the
  1566. <!--$v=4661115-->router CLI.  But the show interface stat command
  1567. <!--$v=4663680-->will tell you which interfaces are doing process
  1568. <!--$v=4666749-->switching, route caching, which means
  1569. <!--$v=4669314-->fast or optimum switching, or autonomous or silicon 
  1570. <!--$v=4672154-->switching.  If I think that all my packets should be
  1571. <!--$v=4675635-->fast switched but my performance is very poor,
  1572. <!--$v=4678613-->by typing this command I will see whether for some reason
  1573. <!--$v=4681361-->all my packets are being processed switched.  For example, somebody's turned
  1574. <!--$v=4684934-->DEBUG on and left DEBUG running on the router, again forcing
  1575. <!--$v=4688369-->all those packets into the process switching path.
  1576. <!--$v=4691942-->Another interesting command is the show
  1577. <!--$v=4695377-->ip interface command.  This will show me things like, "Do I have
  1578. <!--$v=4698629-->access control lists setup on this particular protocol.
  1579. <!--$v=4701836-->Am I using facilities such as autonomous
  1580. <!--$v=4704263-->switching?"  Remember, autonomous switching is always
  1581. <!--$v=4707470-->available on a 7000, but by default,
  1582. <!--$v=4710172-->fast switching is turned on for IP and IPX and so on.
  1583. <!--$v=4713745-->Am I using accounting information?
  1584. <!--$v=4716402-->And am I using compression on say, TCP
  1585. <!--$v=4719287-->header information?  So this command
  1586. <!--$v=4722402-->is very, very useful so I can understand when I'm
  1587. <!--$v=4724921-->doing features or turning on features that could affect performance
  1588. <!--$v=4728265-->on my router.
  1589. <!--$v=4730830-->So the things to look for if I'm finding network performance issues
  1590. <!--$v=4733441-->are, percentage of drops and ignores and I gave you
  1591. <!--$v=4736281-->some rules of thumb you can apply there -
  1592. <!--$v=4738663-->things that hog the CPU like encryption and
  1593. <!--$v=4741045-->compression, especially, for example, if my
  1594. <!--$v=4743885-->compression is trying to compress data that can't be
  1595. <!--$v=4746862-->compressed, like a bit image, or a GIF file, or a
  1596. <!--$v=4750023-->JPEG image that really - or a file that's already
  1597. <!--$v=4753458-->been compressed, that simply cannot be compressed anymore.  The
  1598. <!--$v=4756390-->CPU will still attempt to compress it but come up
  1599. <!--$v=4759000-->with a very, very high CPU utilization with poor
  1600. <!--$v=4762344-->results.  Making sure my configuration
  1601. <!--$v=4764955-->is correct so that if I can use autonomous switching I am -
  1602. <!--$v=4768024-->if I need to use process switching, I have a
  1603. <!--$v=4771368-->router platform that has the appropriate amount of processing
  1604. <!--$v=4774299-->performance.  Stability of my network is also very
  1605. <!--$v=4777368-->important.  Routing protocol updates need to be processed by the
  1606. <!--$v=4780712-->CPU.  In this case, if I have a lot of route instability,
  1607. <!--$v=4784285-->or topology instability in my network, the
  1608. <!--$v=4786941-->router itself's performance will suffer from this.
  1609. <!--$v=4789461-->For example, because my cache isn't being validated very quickly and
  1610. <!--$v=4792438-->I have to again, go through process switching, in the example of
  1611. <!--$v=4795095-->optimum, NetFlow, and fast switching.
  1612. <!--$v=4798347-->So from a summary
  1613. <!--$v=4801187-->perspective, understand the performance requirements of your network, remembering 
  1614. <!--$v=4804668-->the intrinsic media restrictions you have.
  1615. <!--$v=4807737-->Use a faster switching supported - the fastest supported
  1616. <!--$v=4810256-->switching path, be it autonomous
  1617. <!--$v=4812867-->switching or optimum switching, or silicon switching if you  have the
  1618. <!--$v=4816440-->silicon switch engine on the 7000.  On the
  1619. <!--$v=4819371-->7500, look for distributed switching functions like
  1620. <!--$v=4822578-->distributed NetFlow and distributed optimum switching on the
  1621. <!--$v=4825738-->VIP cards that are going to give you, again, a performance improvement.
  1622. <!--$v=4828578-->Choose the appropriate router platform, and carefully
  1623. <!--$v=4831693-->implement these features such as compression,
  1624. <!--$v=4834121-->accounting, access control lists, that can really
  1625. <!--$v=4836502-->affect the performance of your network equipment.
  1626. <!--$v=4839068-->That's the conclusion of this presentation.  I'll also
  1627. <!--$v=4842549-->recommend there are various other presentations along this theme that could be very useful for an 
  1628. <!--$v=4846076-->overall network - enterprise network solution 
  1629. <!--$v=4848641-->perspective.  The presentation by Marcus Phipps 
  1630. <!--$v=4851206-->on the performance and architecture of campus
  1631. <!--$v=4853954-->LAN switches, again goes through the same basic steps of
  1632. <!--$v=4857344-->understanding how the boxes work and how performance can be
  1633. <!--$v=4859817-->affected by various characteristics.  Thank you.
  1634. </BODY>
  1635. </HTML>
  1636.  
  1637.  
  1638.