Subscribe by Email


Showing posts with label Static. Show all posts
Showing posts with label Static. Show all posts

Friday, August 30, 2013

What is meant by flow specification?

- There are many problems concerning the flow specification. 
- There are limited options for the provider for mitigation of the DDoS attacks that take place internally. 
- These can be categorized in to three different categories:
Ø  BGP (border gateway protocol) destination black holes
Ø  BGP src/ uRP
Ø  ACLS

- The basic idea is to make use of the BGP for the distribution of the flow specification filters. 
- This helps in dynamic filtering in the routers. 
- The flow specification rules are encoded according to the BGP NLRI address family. 
- The flow spec NLRI is used by the BGP as its opaque key is used as an entry key for its database. 
- The extended communities are used for specifying the actions such as accepting, discarding it, rate limiting, sampling, redirecting and so on. 
- The source/destination prefix and the source/destination port are matched in combinations according to the packet size, ICMP type/co9de, fragment encoding, DSCP, TCP flag and so on. 
- For example, the TCP ports 80…90 are matched with 192.168.0/24. 
- The flow specification trust model uni casts the routing advertisements for controlling the traffic. 
- Filter is considered as a hole for the traffic that is being transmitted to some destination. 
- Filter is accepted when it is advertised for the destination by the next hop. 
Filters with various flow specifications are available today.
- The major benefit of the flow specifications is the filters with the fine grain specification which make it easy for deploying and managing the BGP. 
- The trust and the distribution problems are solved by the BGP. 
- ASIC filtering in routers is leveraged. 
- This is another major benefit of flow specifications. 
Apart from the benefits, there are various limitations of the flow specifications as mentioned below:
Ø  There is no update level security in the BGP.
Ø The statistics and the application level acknowledgement are not well defined.
Ø  The flow specifications work only for those nodes for which the BGP has been enabled.
Ø  Beyond routing the BGP payload has to be overloaded.
Ø  There are various operational issues between the security operations and the network operations.
Ø  The threat information cannot be gathered in one place.

- The integration of the flow specifications was announced by various security vendors. 
- The DDoS attacks are experienced by a large number of customers. 
- The DDoS attacks are now massive and have put the network infrastructure at risk apart from the end customer. 
- Congestion problems occur at both the exchange and the backbone. 
- The attacks of long durations add to the cost of bursting and circuit congestion problems. 
- Depending up on the size of the attack the POP has to be isolated.
- VoIP is also affected. 
- These attacks have negative economic effects as the cost of the operations has been increased. 
- This has led to a degradation of the business. 
- Measures such as firewall filtering and destination BGP black-holing have proved to be insufficient in preventing the attacks. 
- These methods are slow since it is required to log-in and configuring the devices. 
- The configuration has to be constantly. 
- The traffic is terminated to some destination. 
- This affects the availability. 
- The black hole routes are removed by constantly changing the configurations. - Earlier version of the flow specifications had many bugs. 
- There were some limitations on the performance. 
- However, it provided arbor support for the actions of the flow specifications. 
It does not provide multi–vendor support. 
- To some extent it provides the mitigation facility for the attack that occurred at the source. 
- The collateral damage is eliminated for both the carriers and supports the change in the matching criteria. 


Thursday, August 8, 2013

Flooding - a kind of static algorithm

An algorithm designed for the distribution of the material to each and every part of the graph is referred to as the flooding algorithm. 
- The algorithm has got its name from the concept that involves inundation caused by a flood. 
- The main application of these algorithms is in graphics and computer networking. 
- These algorithms also come very handy in solving a number of mathematical problems. 
- Examples of such problems that are graph theory problems, maze problems and so on. 
- Flooding algorithm though it sounds complicated is quite a simple one. 
- Here, every incoming packet is sent via every outgoing link. 
- Only the link through which the packet arrived is saved. 

This algorithm has many applications in the following:
  1. Systems that require bridging, systems like use net.
  2. Peer to peer file sharing.
  3. Used as a part of the routing protocols such as the DVMRP, OSPF etc.
  4. Used in protocols used for the adhoc wireless networks.
Nowadays the flooding algorithm is available with its many variants. The following are two main steps that each variant follows while working:
  1. Each node in the network might act as both receiver and the transmitter.
  2. The incoming message is forwarded by the receiving node to each of its neighboring nodes except the one which is the source code.
- This causes the message to be delivered to each and every part of the network that is reachable. 
- Algorithms are required as a precaution for avoiding the wastage of the infinite loops and the duplicate deliveries and for allowing the messages for expiring. 
- All these issues are addressed partially by a variant of the flooding algorithm called the selective flooding.
- The usual flooding algorithm sends the packets to all the routers that lie in the same direction. 
- But the selective flooding algorithm does not send the packet to each router rather it selects only few of them which lie in the right direction approximately. 

Advantages and Disadvantages of Flooding Algorithm

Advantages:
  1. If it is possible for delivering the packet, it will be delivered but a number of times.
  2. In flooding algorithm every path in the network is naturally utilized and so the shortest path is also used.
  3. The implementation of the flooding algorithm is quite simple.
Disadvantages:
  1. The cost of the flooding algorithm can be very high because a lot of bandwidth is wasted. Even if there is one destination of the message, it will be sent to all the hosts on the network unnecessarily. If in case there occurs a denial of service attack or a ping flood, the reliability of the whole network will be affected badly.
  2. In the computer network, the message might get duplicated. This in turn can increase the load on the bandwidth of the network. This will call for increasing the complexity of the processing for rejecting the duplicates of the messages.
  3. The packets that are duplicate might keep on circulating forever, if the following precautions are not taken:
Ø  Using a time to live count or a hop count to be included with every packet. The value of the count has to include the number of the nodes through which the packets have to be passed while on the way to destination.
Ø  Each and every node should be used for keeping track of every packet that passes through it and a packet should be forwarded only once.

Ø  The network topology must be enforced without any loops. 


Thursday, June 20, 2013

Explain the single and multiple partition techniques?

There are a number of allocation techniques available and all have different properties and allocate memory based on different principles. One prominent type of allocation is the partitioned allocation. 
- In partitioned allocation the primary or the main memory of the system is divided into a number of contiguous memory blocks which are commonly known as the memory partitions. 
- Each of these partitions consists of all the information that might be required for carrying out a specific task. 
- The task of allocating these memory partitions to various jobs and processes and de-allocating them after use is the duty of the memory management unit.  
But partitioned allocation cannot be carried out by the help of software alone. 
It requires some hardware support. 
- This support prevents interference of the various jobs in to each other and with the operating system as well. 
- For example, a lock and key technique was used by the IBM system/ 360. 
- Some other systems made use of the registers called the base and bound registers containing the partition limits and these were also used for flagging if any invalid access was made. 
- Limits register was used by the UNIVAC 1108 having separate base and bound data and instructions. 
- A technique called the memory interleaving was used by this system for placing so called I banks and d banks in different memory modules. 

Partitions are of two types namely:
Ø  Static partitions: These are defined at the boot time or IPL (initial program load) or sometimes by the computer operator. An example of system using static partitions is IBM system/360 operating system multi-programming with MFT (fixed number of tasks).
Ø  Dynamic partitions: These are created automatically for the specified job. An example is of the IBM system/ 360 operating system multi-programming with MVT (variable number of tasks).

- The hardware typed memory such as the base and bound registers (GE – 635, PDP – 10 etc.), Burroughs corporation B5500 etc. is used for relocating the memory partitions. 
- The partitions that can be relocated can be compacted to form larger contiguous memory chunks in the main memory. 
- Some systems allow for swapping out the partitions to the secondary storage and in turn to some additional memory.
The partitioned allocation offers two types of allocation techniques namely:
  1. Single partition techniques
  2. Multiple partition techniques

- Single partition techniques are the ones that are used for the single time sharing partition for swapping in and out the memory partitions. 
- These techniques are used by the IBM’s TSO (time sharing option). 
- The multiple partition techniques are used in the multiple time sharing partition. 
- In DOS systems when the disk is partitioned, each of the memory partitions act as if it is an individual disk drive. 
- Partitioning is useful for the systems where there are more than one operating system. 
- Partitioning techniques are meant for increasing the efficiency of the disk. 
Hard and soft partitioning is used on the apple Macintosh computers. 
- The creation, relocation and deletion of the memory partitions can be harmful for the data. 
- That’s why it is good to have back up of the data stored on your system. 
Several issues have to be considered if you want to install more than one operating system on your computer. 
- Day by day disks are becoming less expensive and bigger. 
- You can go for separate disks for storing data and installing Oss. 


Wednesday, May 22, 2013

What are Address Binding, Dynamic Loading and Dynamic Linking?

In this article we shall discuss about three interrelated concepts namely address binding, dynamic loading and dynamic linking.

1. Address Binding: 
- There are two types of addresses for the computer memory. 
- These are called the physical address and the logical address. 
- A physical memory location is allocated to a logical pointer by address binding process.
- This is actually nothing but associating the physical address and the logical address with each other. 
- Sometimes logical address is also referred to as the virtual address. 
- This concept is an important part of the memory management. 
- Operating system is responsible for carrying out address binding on behalf of the applications and programs that need an access to the memory. 
- A program cannot be executed without bringing it to the main memory. 
- The instructions of the program have to be bound to right address spaces in the physical memory. 
- Address binding is simply a scheme for performing this job. 
- It can be thought of as something similar to address mapping. 
- Address binding can be carried out at any of the following times:
Ø  Compile time
Ø  Loading time
Ø  Execution time

- In execution time binding, whenever the program requires access to memory, it has to go through a register called the relocation register and is similar to the base register. 
- Then the offset is added. 
- But in binding during the loading time, same thing is done but every time this register need not be evaluated. 
- The addresses are mapped at the time of loading the program in to the memory. 
- If there is a change in the base address, the whole program has to be reloaded.

2. Dynamic Loading: 
- This mechanism is very useful for a program as it helps it do the following things:
Ø  Loading library in to the main memory.
Ø  Retrieving the address of the variables and routines that are contained in the library.
Ø  Accessing those variables and executing those routines.
Ø  Unloading the library.
- Dynamic loading is very much different from the load time linking and static linking. 
- Dynamic loading allows a system to start up even of the libraries are absent. - It also helps in discovering the absent libraries and then gaining the additional functionality. 
- Dynamic loading is a very transparent process since it is the operating system that handles it. 
- Main advantages are firstly, it helps in fixing the patches at once without having the need for re-linking them and secondly, it provides protection to the libraries against modification that is not authorized. 
Dynamic loading find its major use in the implementation of the software plugins.
- It is also used in the implementation of the computer programs where requisite functionality is supplied by the different libraries and user has the freedom to select the libraries he/ she wishes to provide.

3. Dynamic Linking: 
- This is an important part of the binding process. 
- The purpose of the dynamic linking is resolving the references or symbols and links to the library modules. 
- This process is carried out by a linker program. 
- This programs searches for a set of library modules in some given sequence. 
This process takes place during the creation of the executable file. 
- The resolved references may be addresses of the jump calls and the routines. - These may in different modules or in the main program.
- Dynamic linking resolves them in to relocatable address or fixed address through allocation of the memory to each of the memory segment of the referenced module. 


Sunday, May 5, 2013

What is DRAM? In which form does it store data?


The random access memory is of two types out of which one is dynamic random access memory or DRAM and the other one is SRAM or static random access memory. 
Here we shall focus up on the first type i.e., the Dynamic RAM. 

What is Dynamic Random Access Memory (DRAM)?

- In dynamic RAM, each bit of the data is stored in a separate capacitor. 
- All these capacitors are housed within an IC (integrated circuit).
- These capacitors can be in either of the two states:
  1. Charged and
  2. Discharged
- The two values of a bit are represented by means of these two states only. 
The two values of bit are 0 and 1. 
- However, there is a disadvantage of the dynamic RAM. 
- These capacitors tend to leak charge and therefore may lose all the stored information. 
- Therefore, it is very important to keep the capacitors flushing with fresh charge. 
- They are refreshed at regular intervals of time. 
- It is because of this refreshing requirement this type of RAM has been named so. 
- The main memory or the physical memory of the CPU is constituted of this dynamic RAM only.
- Apart from desktops, DRAM is also used in workstation systems, laptops, video game consoles etc. 
- The structural simplicity is one of the biggest advantages of the DRAM. 
- For each bit it only requires one capacitor and one transistor, whereas SRAM requires 4 to 6 transistors for the same purpose. 
- This enables the dynamic RAM to attain very high density. 
- DRAM is a volatile memory unlike the flash memory and so it loses data whenever the power supply is cut.
- The capacitors and the transistors it uses are extremely small and so billions of them can be easily be integrated in to one single memory chip.
- DRAM consists of array of charge storage cells arranged in a sort of rectangular way. 
- Each of the cells consists of one transistor and one capacitor. 
- Word lines are the horizontal lines that connect the rows with each other. 
Two bit lines compose each of the columns of cells. 
- These lines are called the + and – bit lines.
- It is specified by the manufacturers that at what rate the storage cell capacitors are to be refreshed. 
- Typically, it is less than or equal to 64 ms. 
- The DRAM controller consists of the refresh logic that is responsible for automating the periodic refresh. 
- This job cannot be done by any other software and hardware. 
- Thus, the circuit of the controller is very complicated. 
- The capacity of DRAM per unit surface is greater than that of the SRAM. 
Some systems may refresh one row at one instant while others may refresh all the rows simultaneously every 64 ms.  
- Some systems use an external timer based up on whose timing they refresh a part of the memory. 
- Many of the DRAM chips come with a counter that keeps track of which row is to be refreshed next.
- However, there are some conditions under which the data can be recovered even if the DRAM has not been refreshed since few minutes. 
- Bits of the DRAM might flip to opposite state spontaneously because of the electromagnetic interference in the system. 
- Background radiation is the major cause for the occurrence of the majority of the soft errors.
- Because of these errors the contents of the memory cells may change and circuitry might be harmed. 
- Redundant memory bits along with the memory controllers are one potential solution to this problem. 
- These bits are within the modules of the RAM. 
- The parity is recorded by these bits which enable the reconstruction of the missing data via ECC or error – correcting code.


Friday, December 28, 2012

What is the difference between Purify and traditional debuggers?


The IBM Rational Purify grants power to the developers to deliver a product whose quality, reliability and performance matches with the expectations of the users. The purify plus combines the following and provides 3 benefits:
  1. Bug finding capabilities from the rational purify,
  2. Performance tuning effects from the rational quantify and
  3. Testing rigors from the rational pure coverage.
Together these three things make purify a different debugger that what the traditional debuggers we have. The above mentioned 3 benefits are measured in the terms of the faster development times, less number of errors and better code. 

About IBM Rational Purify

- The purify is actually a memory debugger by nature and is particularly used for the detection of the memory access errors especially in the programs that have been written in languages such as C and C++. 
- This software was originally developed by Reed Hastings, a member developer of the pure software organization. 
- However, Rational Purify exhibits the similar functionality as that of the Valgrind, bounds checker, Insure++.
- A process called dynamic verification using which the errors that occur during the execution can be discovered by a program is supported by the rational purify just like a debugger.
- However, there is another process called the static verification which is just the opposite of the dynamic verification and is also supported by the rational purify. 
- This process works by digging out inconsistencies present in the program logic. 
- Whenever there is a linking between a program and purify, the correct version of the verified code is automatically inserted in to the executable part of the code by either adding it to the object code or by parsing. 
- So, if whenever an error occurs, the location of the error, its memory address and other relevant info will be printed out by the tool. 
- Similarly, whenever a memory leak is detected by the purify it generates a leak report towards the exit of the program.

Difference between Rational Purify and Traditional Debuggers

- The major difference between the rational purify and the traditional debuggers is the ability of detecting the non – fatal errors. 
- The traditional debuggers only show up the sources which can cause the fatal errors such as a de-referencing to a null pointer can cause a program to crash and they are not effective in finding out the non – fatal memory errors. 
However, there are certain things for which the traditional debuggers are more effective than the rational purify for e.g.
- The debuggers can be used to step line by line through the code and to examine the memory of the program at any particular instance of time. 
- It would not be wrong if we say that these two tools are complementary to each other and can work great for a skilled developer. 
- The purify comes with other functionality which can be used for more general purposes rather than the debuggers which can be used only for the code.
- One thing to be noted about the purify is that it is more effective for the programming languages in which the memory management is left to the program developer. 
- This is the reason why the occurrence of the memory leaks is reduced in the programs written in languages such as java, visual basic and lisp etc. 
- It is not like these languages will never have memory leaks, they do have which occur because of the objects being referred to unnecessarily (this prevents the re – allocation of the memory.). 
- IBM has provided solution for these kind of errors also in the form of its another product called the rational application developer.
- Errors such as the following are covered by the purify:
  1. Array bounds
  2. Access to un-allocated memory
  3. Freeing the memory that is un-allocated
  4. Memory leaks and so on. 


Saturday, June 2, 2012

What is meant by the term system metaphor? What is its use?


System metaphor- well this is a term which is related to the extreme programming but less known of! What is the system metaphor and what is its use and what is the need? 
We shall be discussing all these aspects of the system metaphor in this article. 

"A system metaphor in the simplest words can be defined as a story that any one includes customers, programmers and managers) can tell reading how a system works".

Reasons why we need to use System Metaphor


There are several reasons for why we need to use the system metaphor.  They have been listed below:
  1. Architecture: The metaphor is consider to shape the software system or application exactly as it is required by us with the help of identifying the key objects and giving suggestions regarding the aspects of their interfaces. The dynamic and the static models of the system are supported by the system.
  2. Shared Vocabulary: A common system of names for the objects and relationships that exist between them are suggested by a system metaphor only and thus it provides a powerful vocabulary for the developers and programming experts. The vocabulary created is shorthand and specialized.
  3. Common Vision: System metaphor comes in to as a very handy tool that helps in enabling all the stake holders to agree up on the working of the software system or application. The key structure of how the problem and the solution have been perceived is provided by the system metaphor itself. Overall, this helps in understanding the working of the system well.
  4. Generativity: A system metaphor by the means of its analogies can get you new ideas regarding the problem and its solution and can further dig out many other important issues.

How to choose a System Metaphor?


- Even though choosing up a proper system metaphor for your system may take some time and efforts, it is the best option that you have for exploring several possibilities just by looking at the system through various views. 
- If by combining two metaphors you are getting the one that is fit for your then go for it. 
- Now what if you come to know that you could have got a better metaphor for your system than what you have already opted for? No need to worry, you can still develop your system in that direction. 
- Such a measure will also help you in achieving a greater understanding of your problems. 
- What if you are not able to think of any good metaphors? 
- There are some naive metaphors always available to your rescue. Below mentioned are some examples of the system metaphors:
  1. Use of a pension tool as a spreadsheet.
  2. Using desktop metaphor for graphical user interface.
  3. Buckets, lines and bins in C3 payroll.
  4. Bills of materials in VCAPS.
  5. A double entry system being used as book keeping and spreadsheet.

More about System Metaphor


- Suppose you sign a contract with a client for developing some software system, what you do next? 
- You search for a good system metaphor that will guide the development of your software system or application.
- A metaphor very well guides the development process of a project. 
- Not any one can choose a good metaphor, it requires skills, practice and of course deep knowledge.
- A system metaphor is nothing but a metaphor having a simple design and some essential qualities that the original needs to have. 


Tuesday, May 15, 2012

How does a definition use association play a role in data flow testing?


Definition use association is one of the terms that appear at the scene of data flow testing and quite many of us are unaware of it. This article is all about the concepts of the definition use associations and what role does they have got to play in the data flow testing. 
The definition use association forms quite an important part of the data flow testing. Let us see how! 
First we are going to discuss some concepts of the data flow testing in regard with the definition use associations and then we will discuss the role of the definition use associations in the data flow testing. 

About Data Flow Testing


- A control flow graph is an important tool that is used by the data flow testing so that the anomalies related to the data can be explored. 
- A proper path selection strategy is what that is required for detection of such anomalies. 
- The path strategy which is to be used can be decided on the basis of the data flow anomalies discovered earlier. 
- Data flow testing is nothing but a family of path testing strategies through the control of a software program or application. 
- The path testing is required so that the sequence of possible events associated with the objects’ status can be explored.
- It is necessary that you keep the number of paths sufficient and sensible so that no object is left without initialization and without being used at least once in its life time without carrying out unnecessary testing. 
Data flow testing is comprised of two types of anomaly detection namely:
1. Static analysis: It is carried out on the program code without its actual execution. It involves finding syntax errors.
2. Dynamic analysis: It is carried out on a program while it is in a state of execution. It involves finding the logical errors.
- The data objects have been categorized in to several categories so as to make data flow testing much easy:
  1. Defined, created, initialized (d)
  2. Killed, undefined, released (k)
  3. Used (u): in calculations (c)
  4. In predicates (p)

Anomalies discovered by the static analysis are meant to be handled by the compiler itself. But the static analysis and the dynamic analysis do not suffice altogether. A rigorous path testing is required. 

About Definition Use Associations


- The definition use associations or the “du segments” are the path segments whose last links have a use of variable X and are simple and definition clear. 
- Typically  a definition use association is a combination of triple elements (x, d, u) where:
  1. X is the variable
  2. D is the node consisting of a definition of variable x
  3. U is either a predicate node or a statement depending up on the case and consists of a use of x.
- A sub path from d to u is also included in the flow graph with no definition of variable x occurring in between the d and u. 
- Below mentioned are some examples of the def use associations:
  1. (x, 3, 4)
  2. (x, 1, 4)
  3. (y, 2, (4, t))
  4. (z, 2, (3, t)) etc.
- Some of the most common data flow testing strategies are:
  1. All uses (AU)
  2. All DU paths (ADUP) and many more.
- First advice for effective data flow testing would be to resolve all the data flow anomalies discovered above. 
- Carrying out data flow operations on the same variable and within the same routines can also reap you good results. 
- It is advisable to use defined types and strong typing wherever it is possible in the program. 


Facebook activity